我不知道这是允许的,直到最近在测试一些东西时我发现它是。我不知道这个功能的文档,所以我现在知道这是如何工作的。如果可以,我应该使用它吗?因为它确实减少了代码的重复。请考虑以下示例:
//using this feature
if( is_numeric( $number = array_pop( $array ) ) ) {
//work directly with $number and popped array
}
//not using this feature
if( is_numeric( end( $array ) ) ) {
$number = array_pop( $array );
//had to use an extra statement, plus more processing since what could have been done in just statement had to be done in two
}
答案 0 :(得分:2)
=
是赋值运算符。运算符需要两个(或可能更多)操作数,返回一个值。
一个更为人熟知的显而易见的例子是加法运算符 +
。它需要一个左操作数和一个右操作数并返回一个值。你不会三思而后行将它用作函数参数:
is_numeric(1 + 2)
赋值运算符的工作方式相同:
is_numeric($foo = 'bar')
赋值运算符的作用是将右操作数分配给左操作数,表达式作为一个整体然后返回右操作数。您可以在任何可以使用表达式的地方使用它,这几乎无处不在。
答案 1 :(得分:1)
是的,即使在is_numeric
内或if
条件内也可以在任何地方完成作业。 PHP首先执行赋值,结果(赋值的值)用作is_numeric
的参数。
这是一种完全有效且受支持的语法,您将看到它的使用。但是,有些人(包括我自己)会争辩说,对于代码可读性,通常应避免使用这种语法。在浏览代码时很容易错过第一个示例中的赋值,因此当您一年后回来时,代码的含义可能更难解释。第二个例子,虽然它占用更多的行,但更容易阅读和理解。
我正试图找到明确说明文档的位置。尚未找到参考,但在user comment on Function Arguments中提及。
答案 2 :(得分:0)