Код не работает правильно в PHP 7.3. Лучший способ исправить ситуацию, когда она обратно совместима с PHP 7.1 и 7.2, ошибка count () - PullRequest
0 голосов
/ 15 февраля 2020

Это код в laravel framework

 'mat_tactic_id' => count($request['red-mat_tactic_id']) > 0 ? implode(',',$request['red-mat_tactic_id']) : $request['red-mat_tactic_id'],

Вот исключение

ErrorException (E_WARNING) count (): параметр должен быть массивом или объектом это реализует Countable

Я пробовал is_Countable и это исправит, но только в 7.3 он не имеет обратной совместимости.

Есть мысли?

1 Ответ

0 голосов
/ 15 февраля 2020

Вы можете проверить, установлен ли он вообще, и является ли он массивом следующим образом:

isset($request['red-mat_tactic_id']) && is_array($request['red-mat_tactic_id'])

Это означает, что счет будет работать так:

count((isset($request['red-mat_tactic_id']) && is_array($request['red-mat_tactic_id'])) ? $request['red-mat_tactic_id'] : [])

Чтобы он был лучше для чтения, вы, вероятно, разбили бы это на две строки:

$isValueSet = $request['red-mat_tactic_id'] && is_array($request['red-mat_tactic_id'];
count(isValueSet ? $request['red-mat_tactic_id'] : [])

В зависимости от того, что именно является содержимым индекса массива, это можно упростить до:

count($request['red-mat_tactic_id'] ?? [])

Использование нулевой оператор объединения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...