Как заставить php оценивать «011» как «11», а не «9»,

одна строка кода:

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 без изменения самого кода, это невозможно.