【发布时间】:2020-10-29 20:20:57
【问题描述】:
我有一个字符串的定义:
$string = $string1 .' / '.$string2.' / '.$string3;
是否可以将所有字符串写成一行条件,如果不存在,写“0”?
if (!string1) {$string1="0";}
if (!string2) {$string2="0";}
if (!string3) {$string3="0";}
我尝试了类似的方法:
$string = !$string1 ? "0" : $string1.' / '.!$string2 ? "0" : $string2.' / '.!$string3 ? "0": $string3;
但是这种方式是行不通的。
我也试过了?? :
$string = $string1 ?? "0" .' / '.$string2 ?? "0" .' / '.$string3 ?? "0";
【问题讨论】:
-
如果它们不存在,因为它们没有被声明?
-
是的,在这种情况下我需要显示“0”。而且我不想在开始时将它们定义为“0”,我需要在那一行解决它
-
你能定义“不工作”吗?您是否收到错误、不正确的结果等。您使用的是什么版本的 PHP。对于三元,您需要对表达式进行分组,它也是不可读的,并且在 PHP 手册中建议不要使用 (
It is recommended that you avoid "stacking" ternary expressions. PHP's behaviour when using more than one ternary operator within a single statement is non-obvious) -
($string1 ?? 0) .'/'. ($string2 ?? 0). '/'. ($string3 ??0) -
太棒了!我只是错过了括号,现在它正在以这种方式工作 ($string1 ?? 0) .'/'。 ($string2 ?? 0)。 '/'。 ($string3 ?? 0)。谢谢@nice_dev