За последние 24 часа нас посетили 22486 программистов и 1153 робота. Сейчас ищет 681 программист ...

Как исправить ошибку

Тема в разделе "Сделайте за меня", создана пользователем deepfritz, 27 янв 2021.

  1. deepfritz

    deepfritz Новичок

    С нами с:
    26 янв 2021
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте, подскажите как, убрать данное предупреждение? установлен php72-7.2.23
    Или же, что нужно сделоть что бы оно не отображалось на веб странице?
    Код (Text):
    1. Warning: count(): Parameter must be an array or an object that implements Countable in /usr/local/www/utm-cabinet/library/Zend/Db/Table/Abstract.php on line 1309
    PHP:
    1.         $whereList = array();
    2.         $numberTerms = 0;
    3.         foreach ($args as $keyPosition => $keyValues) {
    4.         //print_r($keyPosition);
    5. //        if (is_iterable($keyValues)){
    6. Ошибка в данной линии 1309--->             $keyValuesCount = count($keyValues);
    7.             //}
    8.             //print_r($keyValues);
    9.             // Coerce the values to an array.
    10.             // Don't simply typecast to array, because the values
    11.             // might be Zend_Db_Expr objects.
    12.             if (!is_array($keyValues)) {
    13.                 $keyValues = array($keyValues);
    14.             //    print_r($keyValues);
    15.             }
    16.             if ($numberTerms == 0) {
    17.                 $numberTerms = $keyValuesCount;
    18.             } else if ($keyValuesCount != $numberTerms) {
    19.                 require_once 'Zend/Db/Table/Exception.php';
    20.                 throw new Zend_Db_Table_Exception("Missing value(s) for the primary key");
    21.             }
    22.             $keyValues = array_values($keyValues);
    23.             for ($i = 0; $i < $keyValuesCount; ++$i) {
    24.                 if (!isset($whereList[$i])) {
    25.                     $whereList[$i] = array();
    26.                 }
    27.                 $whereList[$i][$keyPosition] = $keyValues[$i];
    28.             //    print_r($i);
    29.             }
    30.         }
    31.         $whereClause = null;
     
  2. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Эта часть вашего кода означает, что элементы массива $args, обрабатываемые в цикле, разбираются на ключ и его значение.
    Каждое значение считается массивом и к нему применяется функция count().
    PHP сообщает вам, что значения не являются массивом.
    Проблема в массиве $args
     
  3. deepfritz

    deepfritz Новичок

    С нами с:
    26 янв 2021
    Сообщения:
    6
    Симпатии:
    0
    Вот полный код, т.е $args можно удалить?
    PHP:
    1.     public function find()
    2.     {
    3.         $this->_setupPrimaryKey();
    4.         $args = func_get_args();
    5.         $keyNames = array_values((array) $this->_primary);
    6.  
    7.         if (count($args) < count($keyNames)) {
    8.             require_once 'Zend/Db/Table/Exception.php';
    9.             throw new Zend_Db_Table_Exception("Too few columns for the primary key");
    10.         }
    11.  
    12.         if (count($args) > count($keyNames)) {
    13.             require_once 'Zend/Db/Table/Exception.php';
    14.             throw new Zend_Db_Table_Exception("Too many columns for the primary key");
    15.         }
    16.  
    17.         $whereList = array();
    18.         $numberTerms = 0;
    19.         foreach ($args as $keyPosition => $keyValues) {
    20.         //print_r($keyPosition);
    21. //        if (is_iterable($keyValues)){
    22.             $keyValuesCount = count($keyValues);
    23.             //}
    24.             //print_r($keyValues);
    25.             // Coerce the values to an array.
    26.             // Don't simply typecast to array, because the values
    27.             // might be Zend_Db_Expr objects.
    28.             if (!is_array($keyValues)) {
    29.                 $keyValues = array($keyValues);
    30.             //    print_r($keyValues);
    31.             }
    32.             if ($numberTerms == 0) {
    33.                 $numberTerms = $keyValuesCount;
    34.             } else if ($keyValuesCount != $numberTerms) {
    35.                 require_once 'Zend/Db/Table/Exception.php';
    36.                 throw new Zend_Db_Table_Exception("Missing value(s) for the primary key");
    37.             }
    38.             $keyValues = array_values($keyValues);
    39.             for ($i = 0; $i < $keyValuesCount; ++$i) {
    40.                 if (!isset($whereList[$i])) {
    41.                     $whereList[$i] = array();
    42.                 }
    43.                 $whereList[$i][$keyPosition] = $keyValues[$i];
    44.             //    print_r($i);
    45.             }
    46.         }
     
  4. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Нет, нужно найти откуда он берется, и выяснить почему его структура не соответствует задуманному.
    Это же ваш код, вам должно быть виднее.
     
  5. deepfritz

    deepfritz Новичок

    С нами с:
    26 янв 2021
    Сообщения:
    6
    Симпатии:
    0
    К сожалению это не мой код, помогите разобраться. Получается здесь $args = func_get_args() задается какая то переменая верно?
     
  6. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Не совсем так, речь о том что значение в count() должно быть массивом или реализовывать интерфейс Countable.

    Вернее сказать не в массиве в переменной.

    Стоит проверять $keyValues на то что ожидаешь, например так, как было изначально
    PHP:
    1. // if (is_iterable($keyValues)){
     
  7. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Но, если код не ваш, и багаж знаний невелик, то я не знаю чем вам помочь.
    Извините.
     
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360