Я уже давно укоренялся с 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, но я не уверен, как это в прошлом, если оператор работает/что это оценки.
http://www.php.net/manual/en/language.operators.bitwise.php – Rottingham
То вроде как, используя бит маскирования. Если вы заметили функцию error_reporting (http://www.php.net/manual/en/function.error-reporting.php), вы ИЛИ (|) значения; в побитом мире OR означает «+»; – Gasim
Поразрядные значения. См. Документацию по php. – makallio85