开发者

Is this valid PHP syntax?

if ($var == ($var1 || $var2))
{
    ...
}

I am considering using this, but am ont sure if it is valid, and there doesn't seem to be so开发者_运维百科mewhere to check.

It seems logically consistent to me but am not sure, and I don't have something to test it on close by.

If it is valid, what other mainstream languages support this sort of construct.

EDIT: The comparison is valid, but not in the way I was thinking.

What I was trying to do was actually the in_array() function, which I just discovered.


Your code is syntactical valid but semantical probably not what you wanted.

Because $var1 || $var2 is a boolean expression and always yields true or false. And then $var is compared to the result of that boolean expression. So $var is always compared to either true or false and not to $var1 or $var2 (that’s what you’re have probably expected). So it’s not a shorthand to ($var == $var1) || ($var == $var2).

Now as you already noted yourself, in_array is a solution to this problem if you don’t want to write expressions like ($var == $var1) || ($var == $var2), especially when you have an arbitrary number of values you want to compare to:

in_array($var, array($var1, $var2))

Which is equivalent to:

($var == $var1) || ($var == $var2)

If you need a strict comparison (using === rather than ==), set the third parameter to true:

in_array($var, array($var1, $var2), true)

Which is now equivalent to:

($var === $var1) || ($var === $var2)


Yes, the corrected version is valid syntax:

if ($var == ($var1 || $var2))

Question is, what does it mean?

It will compare the result of the expression ($var1 || $var2) which will be a boolean, to the value of $var.

And, as mentioned, php -l file.php will tell you if there are any syntax errors.

Edit:

Consider this:

$var1 = 1;
$var2 = 2;

echo var_dump(($var1 || $var2));

Result is:

bool(true)


You can use the command php -l filename.php from the command line to check for syntax errors.


As George Marian says, it's missing a closing parenthesis so would throw a syntax error. It's otherwise valid, though, so I can't see that it's the logical OR construct itself that you're unsure about. It's used in several languages, including javascript.


your corrected example is valid and will be TRUE is $var is TRUE and either $var1 or $var2 is TRUE .. OR . if $var, $var1 and $var2 are all FALSE

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜