Ответ 1
Это странно...
Но
<?php
echo '11hello ' . (1 + 2) . '34';
?>
ИЛИ
<?php
echo '11hello ', 1 + 2, '34';
?>
проблема с фиксацией.
UPDv1:
Наконец, удалось получить правильный ответ:
'hello'
= 0
(не содержит ведущих цифр, поэтому PHP предполагает, что он равен нулю).
Так 'hello' . 1 + 2
упрощается до 'hello1' + 2
is 2
, потому что никакие ведущие цифры в 'hello1'
тоже не равны нулю.
'11hello '
= 11
(содержит ведущие цифры, поэтому PHP предполагает, что одиннадцать).
Итак, '11hello ' . 1 + 2
упрощается до '11hello 1' + 2
, поскольку 11 + 2
есть 13
.
UPDv2:
http://www.php.net/manual/en/language.types.string.php
Значение задается начальной частью строки. Если строка начинается с действительных числовых данных, это будет используемое значение. В противном случае значение будет равно 0 (ноль). Действительные числовые данные являются необязательный знак, за которым следует одна или несколько цифр (необязательно содержащий десятичная точка), а затем необязательный показатель. Показатель - это 'e' или 'E', за которым следуют одна или несколько цифр.