Задать вопрос
@dmitriyuvin
FullStack developer ( Laravel & Vue )

Почему не инкрементируется переменная?

$var= 0;

function up($var)
{
    return $var++;
}

echo up($var); // 0
echo $var++; // 0

Почему не увеличивает при первом вызове?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Для начала оно и со второго раза не заинкрементируется потому что вы её локально в функции инкрементируете, и во втором вызове всё равно 0 передаётся.

Во-вторых постфиксный инкремент сразу возвращает текущее значение, и только потом увеличивает значение.

++$var и тогда вернет сразу 1
(и при втором вызове тоже сразу 1 будет, 2 не появится никак)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@neeil
$var= 0;

function up(&$var)
{
    return ++$var;
}

echo up($var);
echo up($var);
echo up($var);
echo up($var);


Можно так :)
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
потому что она не глобальная/статическая/переданная по ссылке.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Потому что она живет только внутри функции и умирает вместе с ней.

Надо делать так: $var = up($var);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы