Assign variable within condition if true
@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.
Instead you can Use ternary operator like this
$var = ($foo == true)?$foo:"put here what you want";