我正在研究我最近在网上找到的一些代码,并且遇到了这种PHP语法:
<?php $framecharset && $frame['charset'] = $framecharset; ?>
有人可以解释这行代码中发生了什么吗? 哪些变量被分配了什么值,以及&amp;&amp ;;的目的是什么?运营商,在声明的那个位置?
谢谢! 专利
答案 0 :(得分:3)
啊,我刚刚在javascript中写了一篇关于这个成语的博文:
http://www.mcphersonindustries.com/
基本上它正在测试$framecharset
是否存在,然后尝试将其分配给$frame['charset']
,如果它是非空的。
它的工作方式是口译员很懒惰。 &&
陈述的双方都必须是真实的才能继续。如果遇到false
后跟&&
的值,则会停止。它不会继续评估(因此在这种情况下,如果$framecharset
为false
或null
,则不会进行分配。
有些人甚至会在&&
之后放置更“昂贵”的布尔表达式的一半,所以如果第一个条件不是true
,那么昂贵的位将永远不会处理。可以说这实际可以节省多少,但它使用相同的原则。
答案 1 :(得分:2)
PHP
中的 &&
被短路,这意味着如果RHS
评估为LHS
,则不会评估false
,因为结果永远是false
。
您的代码:
$framecharset && $frame['charset'] = $framecharset;
相当于:
if($framecharset) {
$frame['charset'] = $framecharset;
}
仅当值评估为$framecharset
并且在PHP
charset
的值作为值分配给数组键true
除了两个字符串外,所有字符串均为true:字符串 根本不包含 ,字符串只包含 字符0 < /强>