I know you can assign a variable in a condition like this:
if ($var = $foo)
However I don't need to do anything in the condition itself, so I'm often left with empty brackets. Can I simply assign $var
if $foo
is true
in some other way without needing to do something else later?
Also can I assign $var
to $foo
if $foo
is true
but if $foo
is false
do something else? Like:
if ($var = !$foo) {
if ($var = !$bar) {
//Etc...
}
}
Basically I want to have more fallbacks/defaults.
Yes, you can assign the value of variable inside if.
Can we put assignment operator in if condition? Yes you can put assignment operator (=) inside if conditional statement(C/C++) and its boolean type will be always evaluated to true since it will generate side effect to variables inside in it.
We can use a special operator to assign a variable within the expression of an if-statement. This is commonly called the "walrus operator" for its syntax. Same line. An if-statement can be on the same line as its body.
Answer. No, variables declared inside an if statement would not be accessible directly outside an if statement because if statements have their own scope.
@chandresh_cool's suggestion is right but to allow multiple possiblities / fallbacks you would have to nest the ternary expressions:
$var = ($foo == true) ? $foo:
($bar == true) ? $bar:
($fuzz == true) ? $fuzz:
$default;
Note: the first 3 lines end in colons not semi-colons.
However a simpler solution is to do the following:
$var = ($foo||$bar||$fuzz...);
Although this is a very old post. Fallback logic on falsify values can be coded like this.
$var = $foo ?: $bar ?: "default";
In this case when $foo
is a falsified value (like false, empty string, etc.) it will fall back to $bar
otherwise it uses $foo
.
If bar is a falsified value, it will fallback to the string default
.
Keep in mind, that this works with falsified values, and not only true
.
example:
$foo = "";
$bar = null;
$var = $foo ?: $bar ?: "default";
$var
will contain the text default
because empty strings and null
are considered "false" values.
[update]
In php 7 you can use the new null coalescing operator: ??
, which also checks if the variable exists with isset(). This is usefull for when you are using a key in an array.
Example:
$array = [];
$bar = null;
$var = $array['foo'] ?? $bar ?? "default";
Before php 7 this would have given an Undefined index: foo
notice. But with the null coalescing operator, that notice won't come up.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With