@psfpro

Почему такое поведение PHP при сложении чисел?

Есть код
$article = Article::findOne(['url' => $itemUrl]);
        $article->setViews($article->getViews() + 1);
        $article->save();

Получаю на выходе прибавку на 2 вместо 1.
Далее делаю так
$article = Article::findOne(['url' => $itemUrl]);
        echo $article->getViews();
        $article->setViews($article->getViews() + 1);
        $article->save();

добавляю
echo $article->getViews();
после этого прибавка работает правильно на 1

Методы
/**
     * @return int
     */
    public function getViews()
    {
        return $this->views;
    }

    /**
     * @param int $views
     * @return $this
     */
    public function setViews($views)
    {
        $this->views = (int)$views;
        return $this;
    }


Вот ещё новая информация
d5b010601108412d983e656235edb932.jpg
Браузер почему-то два раза запросы шлет. Первый раз тип "document", второй раз "text/html".
Если добавляю строку echo $article->getViews();, то второй раз уже не идет запрос.
Браузер 2 раза открывает страницу получается.
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 3
kumaxim
@kumaxim
Web-программист
Проверьте тип возвращаемого значения в первую очередь.

echo gettype($article->getViews());

Я думаю у Вас там будет строка и, возможно, проблема растет оттуда.
Далее делаем приведение типов:

$article->setViews((int)$article->getViews() + 1);

Попробуйте
Ответ написан
Комментировать
Что внутри метода $article->getViews()
Ответ написан
Комментировать
elevenelven
@elevenelven
Php Dev @ Amadeus
Вы уверены что код у вас не выполняется дважды? Редиректы на странице, циклы?

Давайте для полноты картины вы приведете код
$article->getViews();
$article->setViews();
Ответ написан
Ваш ответ на вопрос

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

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