PHP проверка массива на пустоту

268
05 марта 2018, 01:35

Здравствуйте, появилась паранойя.

Как надежнее проверять массив с важными данными, на пустоту?

if(!empty($arr)) {
  ..to do
}

Или же фильтровать массив от пустых значений, затем его проверять на empty:

if(!empty(array_filter($arr))) {
  ..to do
}
Answer 1

Нужно смотреть что вам нужно, если в масиве будет только один елеммент со значением NULL то empty вернет FALSE.

$array = [NULL];
var_dump(empty($array));

вернет FALSE.

Но в то же время,

$a = NULL;
var_dump(empty($a));

вернет TRUE.

То есть PHP не идет рекурсивно вглубь массива и не проверяет значения массива, если там будут только NULL массив все равно будет считаться непустым.

Твой способ так же плохой для отсеивания NULL, FALSE, '';

Смотри что будет

$arr = [
    NULL,
    'key' => [
        NULL
    ],
];
var_dump(empty(array_filter($arr)));

будет FALSE. Но наверное тебе нужно TRUE :)

Можно использовать array_walk_recursive, но все зависит от задачи.

READ ALSO
Конвертация сайта в приложение

Конвертация сайта в приложение

Встречаю онлайн сервисы на PHP, которые позволяют указать ссылку на сайт и получить мобильное приложение с webview компонентом с предустановленным...

253
PHPStorm и OpenServer

PHPStorm и OpenServer

Windows 10, фреймворк Yii2 Установил OpenServer, PHPStorm (лицензия)Настроил интерпретатор на PHP7 x64 из OpenServer, работает

369
xdebug в OpenServer и NetBeans

xdebug в OpenServer и NetBeans

Использую php_xdebugdll, который уже лежит в папке modules\php\PHP-7

303
Не понимаю ошибку в framework Yii2 и JavaScript

Не понимаю ошибку в framework Yii2 и JavaScript

Установил OpenServer, скачал yii2 basic, распаковалУвидел надпись "Поздравляем"

307