-1

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;
}
?>
4

1 回答 1

1

代码 1 是否等于代码 2?

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

是什么&意思~

&在 php 中指的是 BITWISE AND运算符~在 php 中指的是 BITWISE NOT 或 Complement运算符。在这种情况下,它给出了常数的补值。

但是,您需要知道~这里的优先级最高。

于 2013-06-11T02:34:58.473 回答