php – 表达式中的变量赋值如何工作?
这是我之前见过的一种做法,但不常见:在评估值本身的同时将一个变量赋值给一个值(或者它是被评估的表达式本身?).例:
// Outputs "The value is 1" $value = 1; if ($var = $value) { echo "The value is $var"; } 似乎是相同的: $value = 1; $var = $value; if ($var) { echo "The value is $var"; } 另一个例子: // Outputs "The value is 1" $value = 1; echo "The value is ".$var = $value; 我一直在使用它来缩短我的代码,主要是第一个例子:用于评估第一个变量或表达式,同时将它分配给同一个表达式中的另一个.像这样的东西: if ($status = User::save($data)) { echo "User saved."; } // do something else with $status 这看起来很基本,但我实际上找不到任何documentation,也许我不知道在哪里看.我最近才知道它在看了多年之后是如何工作的,我真的很喜欢使用它,但我不想随意使用它. 它使代码更短,可能对某些人来说不太清楚,但肯定不那么重复.这种方法有什么警告吗?这是完全安全还是有任何可能导致失败或导致意外行为的情况?这似乎不是一种非常普遍的做法,所以我希望在开始“疯狂”之前找到解释.如果有文档记录,将非常感谢指向正确页面的链接. 解决方法
从
http://uk3.php.net/manual/en/language.expressions.php开始:
很多人会争辩说你不应该经常使用这种行为.例如,区分: if ($a == 5) { ... } 和 if ($a = 5) { ... } 很棘手!以上两种常用的惯用方式来区分它们: if (5 == $a) { ... } if (($a = 5)) { ... } 第一个称为yoda condition,如果省略了等号,则会导致语法错误.后者在运行时不会有任何不同的行为,但是当表达式没有额外的括号时,一些代码检查器会输出警告. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |