PHP shorthand for isset()? [duplicate]
Asked Answered
E

2

116

Is there a shorthand way to assign a variable to something if it doesn't exist in PHP?

if(!isset($var) {
  $var = "";
}

I'd like to do something like

$var = $var | "";
Ephraim answered 3/9, 2013 at 23:52 Comment(3)
Does $val = isset($var) ? $var : ''; the job for you?Soniasonic
I found this post very useful: davidwalsh.name/php-shorthand-if-else-ternary-operatorsGopherwood
Better original to this duplicate: Best way to give a variable a default value (simulate Perl ||, ||= )Customhouse
M
331

Update for PHP 7 (thanks shock_gone_wild)

PHP 7 introduces the null coalescing operator which simplifies the below statements to:

$var = $var ?? "default";

Before PHP 7

No, there is no special operator or special syntax for this. However, you could use the ternary operator:

$var = isset($var) ? $var : "default";

Or like this:

isset($var) ?: $var = 'default';
Minette answered 3/9, 2013 at 23:55 Comment(9)
Here is a link to new features of PHP7 (including null coalescing operator): php.net/manual/en/migration70.new-features.phpCorset
In addition to assignment statements this operator can also be used in function arguments.Seismography
You may want to use something like this https://mcmap.net/q/152989/-default-array-values-if-key-doesn-39-t-existMinette
@MakashovNurbol on my setup PHP 7.1.11 it works with arrays.Bak
php 7.0 doesn't work with arrays. upgrade if possiblePraseodymium
so-called?... lol it's not "so-called" when it's actually called that. This answer is unnecessarily rude.Tantivy
@Tantivy Thanks for showing me this, it was not my intention to be rude. fyi: I'm from Germany and made a translation error. Translated to German naively, so-called has a different, not rude meaning. It just means "a thing with name X" where X is a name supposed to be new to the reader.Minette
@Tantivy I've just checked a German-English language forum, people suggest "an operator which is known as X" instead of "so-called X". Again, thanks for showing me this. I must have made this 1000 times wrong before :)Minette
My apologies for that interpretation then!! - That's cool and interesting to know too!Tantivy
O
77

PHP 7.4+; with the null coalescing assignment operator

$var ??= '';

PHP 7.0+; with the null coalescing operator

$var = $var ?? '';

PHP 5.3+; with the ternary operator shorthand

isset($var) ?: $var = '';

Or for all/older versions with isset:

$var = isset($var) ? $var : '';

or

!isset($var) && $var = '';
Olethea answered 3/9, 2013 at 23:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.