Вы столкнулись с распространенной ошибкой в языках, которые используют неявное приведение типов. Когда вы читаете содержимое файла foo.txt в $ poo, значение сохраняется в виде строки.
Когда вы говорите PHP увеличивать строку с помощью ++
, PHP должен попытаться определить, что вы имеете в виду. $poo
содержит строку (не число), поэтому PHP не знает, что вы хотите добавить значение 0 + 1; вместо этого он думает, что вы пытаетесь выполнить строковую операцию, и дает неожиданный результат.
Во втором случае неявная типизация показывает, что, поскольку вы используете целое число (не строку) в правой части уравнения, вы должны также привести левую сторону к целому числу.
Чтобы быть в безопасности, вы должны явно указать интерпретатору PHP, что вы пытаетесь выполнить математическую операцию над двумя числами:
$poo[0] = (int)$poo[0] + 1;
Для получения дополнительной информации см. PHP: Тип Жонглирование .