我一直在使用PHP一段时间,但我偶然发现了一些我无法做出正面或反面的东西。这是我在这里找到的一篇文章(我相信这篇文章已被锁定),并且我理解了这个解决方案的大部分内容,但只有一部分我感到困惑。PHP如果语句混淆
if (($number & $error_number) == $number)
{
$error_description[ ] = $description;
}
我不太清楚在这里检查什么。任何帮助表示赞赏。
((完整代码))
<?php
$error_number = 22527; //could also use ini_get('error_reporting')
$error_description = array();
$error_codes = array(
E_ERROR => "E_ERROR",
E_WARNING => "E_WARNING",
E_PARSE => "E_PARSE",
E_NOTICE => "E_NOTICE",
E_CORE_ERROR => "E_CORE_ERROR",
E_CORE_WARNING => "E_CORE_WARNING",
E_COMPILE_ERROR => "E_COMPILE_ERROR",
E_COMPILE_WARNING => "E_COMPILE_WARNING",
E_USER_ERROR => "E_USER_ERROR",
E_USER_WARNING => "E_USER_WARNING",
E_USER_NOTICE => "E_USER_NOTICE",
E_STRICT => "E_STRICT",
E_RECOVERABLE_ERROR => "E_RECOVERABLE_ERROR",
E_DEPRECATED => "E_DEPRECATED",
E_USER_DEPRECATED => "E_USER_DEPRECATED",
E_ALL => "E_ALL"
);
foreach($error_codes as $number => $description)
{
if (($number & $error_number) == $number)
{
$error_description[ ] = $description;
}
}
echo sprintf(
"error number %d corresponds to:<br>\n%s",
$error_number,
implode(" | ", $error_description)
);
?>
我的理解是关键的数组中是预定义的PHP常量,但我不知道怎么说最后if语句是工作/什么它的评估。
http://www.php.net/manual/en/language.operators.bitwise.php – Rottingham
种那样使用位屏蔽。如果您注意到error_reporting(http://www.php.net/manual/en/function.error-reporting.php)函数,则您使用OR(|)值;在按位世界中,OR代表“+”; – Gasim
按位值。请参阅php文档。 – makallio85