Здравствуйте, господа. Я совсем зелёный новичок в PHP. Учусь потихньку - не ругайтесь сильно. Ставлю эксперименты со всем тем, что на данный момент усвоил. Играючи написал код: Код (Text): <?php $a='e'; $e=1024; $b='f'; $f=2048; $c='g'; $g=4096; $d='h'; $h=8192; $array = array("1" => $$a, "2" => $$b, "3" => $$c, "4" => $$d); $con = "$array[1]"."$array[2]"."$array[3]"."$array[4]"; $res = $con / 0; if (res == 0) { echo "Успешно поделено на ноль!"; } ?> Подскажите, пожалуйста, почему нет никакой ошибки? Ведь деление на нуль же... Да, конечно, в error.log есть строчка: Код (Text): "NOTICE: PHP message: PHP Warning: Division by zero in /home/example.com/www/index.php on line 12" А в ней всего лишь NOTICE и WARNING... Я думал, что FATAL ERROR будет по такому случаю, а тут ТАК всё...
а до этого у вас значит никаких странностей нет? Ну про ноль там будет ворнинг. Но не факт, что вы его увидите, зависит от настроек уровня отображения лог-сообщений.
Деление на нуль/ноль не вызывает короткого замыкания в процессоре. В большинстве языков эта ситуация либо: 1) Вызывает эксепшен, не приводящий к падению чего-либо; 2) Рассчитывает значение выражения как NaN, Undefined и тд;
Ну раз разжевали, хочется спросить: Что это за жесть? Код (PHP): $a='e'; $e=1024; $b='f'; $f=2048; $c='g'; $g=4096; $d='h'; $h=8192; $array = array("1" => $$a, "2" => $$b, "3" => $$c, "4" => $$d); $con = "$array[1]"."$array[2]"."$array[3]"."$array[4]";
Да, я проверял свои знания и в $$ (не знаю, как сие правильно называется - символическая ссылка?), и в массивах, и в конкатенации в одну строку... Но самое главное - я хотел-таки успешно поделить на нуль... Чтоб узреть что там, за гранью возможного... Навязчивая мечта, так сказать. А то учили нас, что нельзя делить на нуль. Вселенский заговор, видать, не иначе.
Таки можно. 1) Результат выражения будет непоределен, как ранее говорилось, NaN или Undefined; 2) Но в пыхе нет NaN или Undefined, зато есть null, к которому сие и приводится; 3) При выводе null конвертится в ближайшее по контексту значение, то есть в 0, а var_dump покажет вообще как false; Се ля ви, пых он такой.
Прошу прощения, но пример ниже выводит NAN: Код (Text): <?php $a = acos(8); echo $a; echo "<br>"; var_dump($a, is_nan($a)); ?>
http://php.net/is_nan смотрите коммент, нан есть и это совершенно мистическая константа, которую невозможно получить с помощью математического выражения без функций, так что его для веб программистов нет =) в отличии от js где он на каждом углу некорректных выражений.