开发者

Strange variable assignment

I was studying some code I found on the web recently, and came across this php syntax:

<?php $framecharset && $frame['charset'] = $framecharset; ?>

Can 开发者_运维百科someone explain what is going on in this line of code? What variable(s) are being assigned what value(s), and what is the purpose of the && operator, in that location of the statement?

Thanks! Pat


Ah, I just wrote a blog post about this idiom in javascript:

http://www.mcphersonindustries.com/

Basically it's testing to see that $framecharset exists, and then tries to assign it to $frame['charset'] if it is non-null.

The way it works is that interpreters are lazy. Both sides of an && statement need to be true to continue. When it encounters a false value followed by &&, it stops. It doesn't continue evaluating (so in this case the assignment won't occur if $framecharset is false or null).

Some people will even put the more "expensive" half of a boolean expression after the &&, so that if the first condition isn't true, then the expensive bit won't ever be processed. It's arguable how much this actually might save, but it uses the same principle.


&& in PHP is short-circuited, which means the RHS will not be evaluated if the LHS evaluates to be false, because the result will always be false.

Your code:

$framecharset && $frame['charset'] = $framecharset;

is equivalent to :

if($framecharset) {
    $frame['charset'] = $framecharset;
}

Which assigns the value of $framecharset as value to the array key charset only if the value evaluates to be true and in PHP

All strings are true except for two: a string containing nothing at all and a string containing only the character 0

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜