deepfritz
Здравствуйте, подскажите как, убрать данное предупреждение? установлен php72-7.2.23
Код (Text):
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Код (Text):
$whereList = array(); $numberTerms = 0; foreach ($args as $keyPosition => $keyValues) { //print_r($keyPosition); // if (is_iterable($keyValues)){ Ошибка в данной линии 1309—> $keyValuesCount = count($keyValues); //} //print_r($keyValues); // Coerce the values to an array. // Don’t simply typecast to array, because the values // might be Zend_Db_Expr objects. if (!is_array($keyValues)) { $keyValues = array($keyValues); // print_r($keyValues); } if ($numberTerms == 0) { $numberTerms = $keyValuesCount; } else if ($keyValuesCount != $numberTerms) { require_once ‘Zend/Db/Table/Exception.php’; throw new Zend_Db_Table_Exception(«Missing value(s) for the primary key»); } $keyValues = array_values($keyValues); for ($i = 0; $i < $keyValuesCount; ++$i) { if (!isset($whereList[$i])) { $whereList[$i] = array(); } $whereList[$i][$keyPosition] = $keyValues[$i]; // print_r($i); } } $whereClause = null;
lastdays
Ну так $keyValues должен быть массивом или объектом, иначе зачем там count ?
Ну и посмотри, что у тебя вообще там лежит.
Sail
@deepfritz, в 5-й строке проверяется «итерируемость» объекта. А надо проверять «исчисляемость»
PHP: is_countable — Manual
PHP: Countable — Manual
deepfritz
Для меня это очень сложно так как я человек не знающий язык php. Может подскажите как сделать так чтобы данное предупреждение не отображалось на веб странице?
MouseZver
В раздел сделай за меня
Sail
@deepfritz, кстати.
Сразу, увы, на комментарии внимания не обратил В том числе проверка на «итерируемость» закомментирована. Отсюда и ошибка.
В строке 12 выполняется проверка — является ли $keyValues и, если нет — создаётся массив.
Так что перенесите строку 6 между текущими 15 и 16. (Из кода, приведённого в первом сообщении)
deepfritz
@SailСпасибо, все заработало, предупреждение не появляется.