Чтение PHP из файла и добавление одного - PullRequest
1 голос
/ 18 ноября 2011

Допустим, у меня есть файл foo.txt, в котором у меня есть одна цифра, равная 0. Затем я читаю этот файл, и 0 сохраняется в массиве.Я хочу увеличить число на 1, поэтому я просто использую сокращенный оператор ++, но он не работает, однако += делает.

$poo = file("foo.txt");
$poo[0]++;
echo $poo; // gives me 0
$poo[0] += 1;
echo $poo; // gives me 1

Я знаю, что когда я читаю файл, значение poo[0]строка с пробелом "0 ", но почему она не работает с ++?

1 Ответ

2 голосов
/ 18 ноября 2011

Вы столкнулись с распространенной ошибкой в ​​языках, которые используют неявное приведение типов. Когда вы читаете содержимое файла foo.txt в $ poo, значение сохраняется в виде строки.

Когда вы говорите PHP увеличивать строку с помощью ++, PHP должен попытаться определить, что вы имеете в виду. $poo содержит строку (не число), поэтому PHP не знает, что вы хотите добавить значение 0 + 1; вместо этого он думает, что вы пытаетесь выполнить строковую операцию, и дает неожиданный результат.

Во втором случае неявная типизация показывает, что, поскольку вы используете целое число (не строку) в правой части уравнения, вы должны также привести левую сторону к целому числу.

Чтобы быть в безопасности, вы должны явно указать интерпретатору PHP, что вы пытаетесь выполнить математическую операцию над двумя числами:

$poo[0] = (int)$poo[0] + 1;

Для получения дополнительной информации см. PHP: Тип Жонглирование .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...