За последние 24 часа нас посетили 22803 программиста и 1261 робот. Сейчас ищут 759 программистов ...

Как проверить массив

Тема в разделе "PHP для новичков", создана пользователем exec, 15 ноя 2019.

  1. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    Есть обращение к базе через PDO, Php 7.4
    Возвращается массив.
    Логично, что надо проверить пустой ли вернулся ответ, или в нем что то есть.

    Раньше я делал так:
    Код (Text):
    1. if(count($row)>0){}
    Все логично, читается понятно. Но в логах заметил ошибку:
    PHP Warning: count(): Parameter must be an array or an object that implements Countable in

    Как то не хорошо.

    gettype($row) говорит object
    print_r($row) говорит PDORow Object

    Подскажите, как правильно понятно и красиво сделать проверку на пустоту, без ошибок ?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
  3. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    PHP:
    1. public function getTwoParam($query, $ParametrTwo)
    2.      $this->sQuery = $this->pdo->prepare($query);
    3.      $this->sQuery->execute($ParametrTwo);
    4. return $this->sQuery->fetch(PDO::FETCH_LAZY);
    5.  
    6. $sql = (' SELECT ....)
    7. $row = $dbh->getTwoParam($sql, $params);
    8. echo $row->rowCount();
    Ошибка:
    PHP Fatal error: Uncaught Error: Call to undefined method PDORow::rowCount() in file.php:8
    Stack trace:
    #0 {main}
    thrown in file.php on line 8

    Или я что то не так делаю ?
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Да, не так.
    PDOStatement::fetch с указанным параметром создаёт новый объект со свойствами соответствующими именам столбцов результирующего набора.
    Этот объект - не экземпляр класса PDOStatement.
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    функция проверки на пустоту называется empty
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    а теперь прочти все остальное, что, где, и для чего целесообразно.
    --- Добавлено ---
    смени инструмент для работы с бд. У тебя statement перекрыт под завязку.
     
    Valick и runcore нравится это.
  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    хочешь сказать что если в массиве данных не будет то условие на empty не пройдёт ?
    --- Добавлено ---
    @MouseZver если ты каунтом проверяешь пустой или не пустой массив то мне жаль твоих клиентов.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    @askanim
    1. а теперь прочти все остальное, что, где, и для чего целесообразно. empty везде, в любой БД проверке на сущ результата, будет лишним действием, причем двойным действием. Не хочу сказать. Почему без empty не можешь ?
    2. нет, я проверяю кол-во твоих символом не актуальных в мой адрес, и то не каунтом.
    3. Жало пчелки > 0 == false - я с ними не работаю. А мне стоит писать про - "жаль твоих клиентов, применяя везде и всюду empty конструкцию" ?
    на 4ый подвиг пойдешь ?
     
    #8 MouseZver, 15 ноя 2019
    Последнее редактирование: 15 ноя 2019