这个复杂的表达意思是什么?

时间:2013-06-11 02:12:25

标签: php zen-cart

code1是来自zencart核心php文件的代码,我很困惑它是什么 code1是否等于code2?
什么是& 〜吝啬?

<?php 
/* code1 */
$errors_to_log = (version_compare(PHP_VERSION, 5.3, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE : version_compare(PHP_VERSION, 5.4, '>=') ? E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT : E_ALL & ~E_NOTICE);

/* code2 */
if(version_compare(PHP_VERSION,5.3,'>=')){
    $errors_to_log = E_ALL & ~E_DEPRECATED &~E_NOTICE;
}else if(version_compare(PHP_VERSION, 5.4, '>=')){
    $errors_to_log = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT;
}else{
    $errors_to_log = E_ALL & ~E_NOTICE;
}
?>

1 个答案:

答案 0 :(得分:1)

代码1是否等于代码2?

是。代码1使用嵌套ternary operator,而代码2使用else-if结构。如果使用括号来表示优先级,则代码1会更清楚。

&~的含义是什么?

php中的

&指的是BITWISE和operator。 php中的~指的是BITWISE NOT或Complement operator。在这种情况下,它给出了常量的补码值。

但是,您需要知道此处~具有最高优先级。