用PHP编写三元操作的正确方法

用PHP编写三元操作的正确方法,php,ternary-operator,Php,Ternary Operator,据我所知,有两种方法可以在PHP中编写三元操作: $var = ( isset( $i['var'] ) ? $i['var'] : "" ); $var = ( isset( $i['var'] ) ) ? $i['var'] : ""; 这些方法中有一种是正确的,还是一种性能比另一种好,或者两者都是可互换的?两者都是正确的。事实上,在你的例子中,你根本不需要括号。您可以这样做: $var = isset( $i['var'] ) ? $i['var'] : ""; 括号不会对代码的性能

据我所知,有两种方法可以在PHP中编写三元操作:

$var = ( isset( $i['var'] ) ? $i['var'] : "" );

$var = ( isset( $i['var'] ) ) ? $i['var'] : "";

这些方法中有一种是正确的,还是一种性能比另一种好,或者两者都是可互换的?

两者都是正确的。事实上,在你的例子中,你根本不需要括号。您可以这样做:

$var = isset( $i['var'] ) ? $i['var'] : "";
括号不会对代码的性能产生任何影响。它们存在有两个原因:

以消除编译器的歧义。 这不适用于您给出的简单示例,因为在操作符中只检查一件事。不过,在一些更复杂的情况下,您可能需要括号。 让它更具可读性。 同样,这个简单的例子无论有没有括号都非常可读,所以不会有太大的影响。但它们可能会帮助您理解当您有更复杂的代码时会发生什么,即使就编译器而言没有任何歧义。
没有两种方法,如果你要考虑插入括号是一种编写操作符的新方法,那么就有无数种方法。您可以添加任意数量的括号,它不会改变任何内容。它们是一样的。你错过了一个没有括号的明显例子,也是唯一一个可以证明是正确的:$var=isset$x$y:$zt这与你问什么是正确的一样:$i=1;或$i=1;只有一种情况下,你真的希望选择第一种,那就是如果你嵌套三元的,你不想这样做。两种形式都有太多的括号:括号通常用于分组逻辑运算符,如and和OR。两者都没有在这里使用,所以唯一的圆括号应该放在isset上。好了,我们开始吧,你每天都会学到新的东西。谢谢你们的反对票,伙计们!