我有一个字符串的定义:
$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";
您的上一次尝试非常接近,但您使用的三元运算符需要在每个测试周围加括号才能工作。
$string = ($string1 ?? "0") .' / '. ($string2 ?? "0") .' / '. ($string3 ?? "0");
你可以用两种方法
我做了一些小改动,在添加圆括号后,你的两个声明都有效。
$string = (!$string1 ? "0" : $string1).' / '.(!$string2 ? "0" : $string2).' / '.(!$string3 ? "0": $string3);
$string = ($string1 ?? "0") .' / '. ($string2 ?? "0") .' / '. ($string3 ?? "0");