是否必须将整个三元运算符语句括在该语句的括号中?

Is it mandatory to enclose an entire ternary operator statement in parenthesis in this statement?

例如在下面的语句中,

$class = (  is_array($tagClasses) ? 'class="'.implode(" ",$tagClasses).'"' : ''  );

最外面的括号只是为了便于阅读还是真的有其他用途?

我认为这只是为了可读性和代码美观,除非你在同一条语句中发生了其他事情,你必须将这部分语句分开并指定先执行什么。

但是我从来没有见过没有括号的语句,并且已经考虑了很长时间。所以这个问题。

我猜最初的意图是提高可读性,或者开发人员可能只是遵循编码标准。虽然换行和缩进比添加不必要的括号更有助于提高可读性。例如:

$class = is_array($tagClasses)
    ? 'class="' . implode(" ", $tagClasses) . '"'
    : '';

当你确实想在一个三元运算符周围添加 () 时,当你将一个运算符嵌套到另一个运算符时(这无论如何都不好),或者为了可读性,你可以将运算符的操作数放在 () 之间如果你有复杂的表达方式。