McFree
@McFree
JS, TS, C#

Почему PHP не может сравнить 2 значения в if?

$data = $_POST;
$last_message_id = intval($data['last']); // возвращает целое значение переменной значение last получает цифру 2 
$message_id = 0;

$query = R::findAll('messages', ' id > ?  ORDER BY id DESC LIMIT 10', array( $last_message_id )); //получает массив с 2 индексами (1 и 2 id)
        // проверяем есть ли какие-нибудь новые сообщения
        $messages = array();
        foreach ($query as $value) {
                $messages[] = $value;
                $message_id = $value['id'];
        }
        $messages = array_reverse($messages); 
        if ( $message_id > $last_message_id ) { 
         выдает true при сравнивании 2 > 2
        }


Нашел одну ошибку из-за которой не видело значение, теперь $message_id получает значение в foreach
  • Вопрос задан
  • 428 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$messages = array_reverse($messages); 
        if ( $message_id > $last_message_id ) { 
        var_dump($message_id);
        var_dump($last_message_id);
        exit;
        }

Берем картину мирозданья
И тупо смотрим что к чему (с)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
выдает true при сравнивании 2 > 2

быть этого не может. Там просто не 2. Выведите:
echo $message_id;
echo '>';
echo $last_message_id;
Ответ написан
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Есть шанс что значение message_id типа float.
В таком случае может быть различие в доли тысячных. Переводите все в int при сравнивании исключительно целых численных значений

if ((int)$message_id > (int)$last_message_id) {
Ответ написан
Ваш ответ на вопрос

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

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