我一直在使用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