Почему операция “инкремент” не работает с массивом?

194
01 августа 2018, 11:10

Простейший пример :

$array = [1, 2, 3];
$result = $array[0]++; // Никаких ошибок код не выдаёт
echo "<p> $result"; // В переменной 1 а не 2.

Я ожидал получить другой результат. Что это баг, или так надо ?

Answer 1

Надо сделать так:

$result = ++$array[0];

Подробнее:

Строка: $result = $array[0]++; делает 2 действия:

1) $result = $array[0];

2) $array[0]++;

Это связанно с принципом работы инкремента. Наглядно можно убедиться на этом примере:

$array = [1, 2, 3];
$link = &$array[0];
$result = $link++;
var_dump($result, $link);

В документации PHP написано:

++$a - Увеличивает $a на единицу, затем возвращает значение $a.

$a++ - Возвращает значение $a, затем увеличивает $a на единицу.

READ ALSO
Как с помощью vue.js пользоваться ajax?

Как с помощью vue.js пользоваться ajax?

Мне нужно сделать проверку инпута, с помощью vuejs, без нажатия на submit, которая будет проверять наличие логина в БД (проверяется в php файле)

166
Удаление и получение user из бд с помощью php

Удаление и получение user из бд с помощью php

В БД 'secret_users' с полями: id, name, email, password, ip_reg, data_reg есть users

182
Выгрузка файлов и запись их в фаил

Выгрузка файлов и запись их в фаил

У меня есть 2 группы радио кнопок:

154
Собрать данные из двух таблиц mysql

Собрать данные из двух таблиц mysql

Есть две таблицыПервая таблица студентов с личными данными

174