问题
I want to convert following if else condition
to nested ternary
operator.
if ($projectURL) {
echo $projectURL;
} elseif ($project['project_url']) {
echo $project['project_url'];
} else {
echo $project['project_id'];
}
I have written like following.
echo ($projectURL)?$projectURL:($project['project_url'])?$project['project_url']: $project['project_id'];
But it is found as not working properly.Is this not a right way?
回答1:
Ternary operators are tricky thing in PHP, as they are left-associative (unlike all other languages, where it's right-associative). You will need to use parenthesis to tell PHP what you want exactly in this case:
echo ($projectURL ? $projectURL : ($project['project_url'] ? $project['project_url'] : $project['project_id']));
回答2:
As of php 7
we can use Null coalescing operator
echo $projectURL ?? $project['project_url'] ?? $project['project_id'];
来源:https://stackoverflow.com/questions/32244527/in-which-order-are-nested-short-hand-assignments-evaluated