2012-06-24 3 views
1

Если вы должны были угадать, что будет на выходе следующего кода PHP:PHP Eval - странное поведение

$str = "011"; 
eval("\$num = $str;"); 
echo "number is: ".$num; 

Я уверен, вы бы никогда не сказал «9». Ну, и я тоже ...
Мне бы хотелось услышать объяснение этого странного поведения!

+2

Я ** ** ** сказал бы «_9_». Так будет и большинство моих коллег, и причина очень очевидна для опытных разработчиков. – Tadeck

+0

@ Tadeck, вы действительно опытный разработчик - путь! – alfasin

+0

Если это нежелательное поведение, попробуйте удалить все ведущие «0» и «0x» (это означает шестнадцатеричные значения). – C0deH4cker

ответ

5

Запуск цифры с ведущим 0 указывает на основание 8, в которой 11 является 9.

до сих пор путают? Прочтите это: http://en.wikipedia.org/wiki/Octal

+0

Вау, это было быстро :) спасибо! – alfasin

Смежные вопросы