я натыкался на этот пример в документации PHP:Руководство по PHP: Преобразование чисел в Is_Numeric Пример 1?
<?php
$tests = array(
"42",
1337,
0x539,
02471,
0b10100111001,
1337e0,
"not numeric",
array(),
9.1
);
foreach ($tests as $element) {
if (is_numeric($element)) {
echo "'{$element}' is numeric", PHP_EOL;
} else {
echo "'{$element}' is NOT numeric", PHP_EOL;
}
}
?>
Выход:
'42' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'not numeric' is NOT numeric
'Array' is NOT numeric
'9.1' is numeric
Пять примеров после '42' все вычисляться '1337'. Я могу понять, почему это имеет место для «1337e0» (научная нотация), но я не понимаю, почему это так для остальных.
Я не смог найти никого, кто упоминает об этом в комментариях документации, и я не нашел его здесь, поэтому кто-нибудь может объяснить, почему «0x539», «02471» и «0b10100111001» оценивают '1337'.