одна строка кода:
echo eval("return 011");
результат равен 9
потому что PHP считает, что 011 – это восьмеричное значение: Ok. Теперь, как заставить php оценить «011» как «11»?
Просто используйте оператор +
чтобы превратить строку в регулярное число; его действие аналогично выполнению (int)
типа или вызову intval()
.
$x = '011'; echo +$x; // 11
Реальный вопрос: почему ваш код имеет eval()
в первую очередь. Помимо изменения строки перед ее оценкой, вы ничего не можете с этим поделать.
Если вы оцениваете математическое выражение, вы можете удалить любые начальные нули перед целыми значениями, например:
$x = '5 * 011'; $x = preg_replace('/(?<=[^\d.]|^)0(?=\d+)/', '', $x); // "5 * 11"
Вы имели в виду intval () ?
<?php echo intval('011');// will return 11?>
Добавьте (int)
чтобы изменить тип данных на целое.
echo (int)'011';
echo eval("return (int)'011';");
Или как изменить его на:
echo eval("return 11;");
Но если вы хотите, чтобы он вернул 9 без изменения самого кода, это невозможно.