Здравствуйте,
Продолжаю страдать после переезда на php 8.1
Теперь перестал работать цикл. Ругается на count()
count(): Argument #1 ($value) must be of type Countable|array, null given
Вот кусок кода, где он применяется:
PHP:
… $data = $db->loadObjectList(); foreach ($data as $var) { $content_id_array[] = $var->content_id; } { … }Не могу починить
Подскажите.
— Добавлено —
Содержимое массива $content_id_arrayarray(32) { [0]=> string(4) «1566» [1]=> string(4) «1533» [2]=> string(4) «1524» [3]=> string(4) «1526» [4]=> string(4) «1448» [5]=> string(4) «1433» [6]=> string(4) «1367» [7]=> string(4) «1356» [8]=> string(4) «1299» [9]=> string(4) «1275» [10]=> string(4) «1268» [11]=> string(4) «1247» [12]=> string(4) «1227» [13]=> string(4) «1207» [14]=> string(4) «1221» [15]=> string(4) «1219» [16]=> string(4) «1202» [17]=> string(4) «1187» [18]=> string(4) «1177» [19]=> string(4) «1132» [20]=> string(4) «1134» [21]=> string(4) «1025» [22]=> string(3) «821» [23]=> string(3) «824» [24]=> string(3) «765» [25]=> string(3) «757» [26]=> string(3) «655» [27]=> string(3) «654» [28]=> string(3) «637» [29]=> string(3) «635» [30]=> string(3) «577» [31]=> string(3) «559» }
— Добавлено —
и вот так выводит без ошибокКод (Text):
echo count($content_id_array); //32
Очевидно ты не на то место в коде смотришь ИЛИ переменная в том месте таки null. Не спорь с интепретатором )))
Я даже вижу в каком случае она null — когда $data получился пустой. Ты же НЕ инициировал $content_id_array пустым массивом до foreach. Это грубая логическая ошибка.
Блин и правда есть второй такой же кусок кода ниже.
Там и был nullОпять носом натыкали
Я не поленился и проверил. Действительно совсем старые версии PHP не ругаются на count(null). Но даже тогда это был плохой код с неинициированной переменной, просто проблема пряталась.
Т е даже если массив будет пустой, но заранее инициирован, то ошибки не будет?
Если инициирован, то не будет
Тоже происходит с первым параметром foreach, котрый д.б. array или object
PHP:
foreach( (object) $node as $key => $value)