Здравствуйте, Продолжаю страдать после переезда на 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; } for ($i=0; $i < count($content_id_array); $i++) { ... } Не могу починить Подскажите. --- Добавлено --- Содержимое массива $content_id_array array(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. Это грубая логическая ошибка.
Я не поленился и проверил. Действительно совсем старые версии PHP не ругаются на count(null). Но даже тогда это был плохой код с неинициированной переменной, просто проблема пряталась. https://onlinephp.io?s=ZczBCsIwEIThs4F9hxFyaOmh3tvig4iUmEayUJMQN0IQ392Kx56_f2Y8J59I9T1qLPDm5SARHFjYiAMLbhXukaTC5GzqRk9xZjmS0jYGcUFmXua_TQhlXQdSpO4xo9E8nQZoxggbS5BmN2l_3HUtqTepg7M-YtdcNF-3z88X&v=8.1.25,7.4.33,7.0.33,5.6.40,8.2.10
Если инициирован, то не будет PHP: echo count((array) $x ); Тоже происходит с первым параметром foreach, котрый д.б. array или object PHP: foreach( (object) $node as $key => $value)