我大量使用三元运算符,但似乎无法在内部相互堆叠多个三元运算符。
我知道堆叠多个三元运算符 会使代码的可读性降低, 但在某些情况下,我想这样做。
到目前为止,这是我尝试过的:
$foo = 1;
$bar = ( $foo == 1 ) ? "1" : ( $foo == 2 ) ? "2" : "other";
echo $bar; // display 2 instead of 1
正确的语法是什么?
这些括号是我认为能带给您的。
尝试
$foo = 1;
$bar = ($foo == 1) ? "1" : (($foo == 2) ? "2" : "other");
echo $bar;
问题内容: 这是我写的: 但是对于每个领域我都有价值。我想使用三元运算符,而不是因为我想尝试一下,看看它会如何完成。 此代码有什么问题? 问题答案: 其他人已经提出了正确的方法,但是如果您真的想使用三元运算符,则需要使用括号:
这是我写的: 但是对于每个字段,我都得到值。我想使用三元运算符,而不是,因为我想试验一下,看看它是如何实现的。 这个代码有什么问题?
问题内容: 如何用elseif部分编写PHP三元运算符? 我看到了带有PHP三元运算符和的基本示例,如下所示: 我如何将这样的“ elseif”部分放入三元运算符中? 问题答案: 三元不是您想要的一个很好的解决方案。它不会在您的代码中可读,并且有很多更好的解决方案可用。 为什么不使用数组查找“ map”或“ dictionary”,如下所示: 此应用程序的三元最终看起来像这样: 为什么这样不好?因
问题内容: 为什么要打印? 以我的理解,它应该打印。 为什么它没有按预期工作? 问题答案: 因为您编写的内容与以下内容相同: 如您所知1被评估为。 您期望的是: 因此,请始终使用大括号以避免此类混淆。 正如已经写过的,三元表达式在PHP中是关联的。这意味着首先将执行从 左边开始 的第一个,然后是第二个,依此类推。
问题内容: 我想将以下内容转换为运算符。 我写得像下面。 但是发现它不能正常工作,这不是正确的方法吗? 问题答案: 在PHP中,三元运算符是棘手的事情,因为它们是左关联的(不同于所有其他语言都是右关联的)。在这种情况下,您将需要使用括号告诉PHP您到底想要什么:
问题内容: 有人可以解释PHP中的三元运算符速记()和空合并运算符()之间的区别吗? 它们什么时候表现不同,什么时候以相同的方式表现(如果甚至发生)? VS。 问题答案: 当您的第一个参数为null时,它们基本相同,不同之处在于,当您有未定义的变量时,null合并不会输出。在PHP7.0迁移的文档有这样一段话: 对于需要将三元数与isset()结合使用的常见情况,已将空合并运算符(??)添加为语法