Проверить на пустоту все значения массива PHP
проверкой если. ( if == или != «» ) контролировать количество элементов массива вы должны сами . упускать терять нельзя . и зная это количество нет сложности составить цикл для проверки — он написан везде в любом учебнике.. (раздел -работа с массивом) // или я не понял о чем речь ну или если массив ассоциативный (по моему у вас он ) там много вариантов Результат выполнения данного примера: array(4) < [0]=>string(3) «foo» [1]=> string(3) «bar» [2]=> string(5) «hallo» [3]=> string(5) «world» > читаните Ассоциативные массивы php и найдете решение обязательно лучше подходяещее для вашей задачи !?php>
Проверка на массив, на наличие элементов и на пустоту в PHP
В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.

1 2 3 4 5 6
$arr = ['id', 'name', 'email']; // Массив элементов if(is_array($arr)){ echo 'Это массив'; }else{ echo 'Это не массив'; }
$arr = [‘id’, ‘name’, ’email’]; // Массив элементов if(is_array($arr))< echo 'Это массив'; >else
Функция вернет true, если это массив и false — если не массив. Это простой пример и сложностей возникнуть не должно. Перейдем к следующему примеру.
Проверка массива на пустоту и пустые элементы в PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$arr = []; if(empty($arr)){ echo 'Массив пустой'; }else{ echo 'Есть элементы'; } // Выведет сообщение, что массив пустой $arr = ['']; if(empty($arr)){ echo 'Массив пустой'; }else{ echo 'Есть элементы'; } // Массив будет не пустым даже если в нем только кавычки.
$arr = []; if(empty($arr))< echo 'Массив пустой'; >else < echo 'Есть элементы'; >// Выведет сообщение, что массив пустой $arr = [»]; if(empty($arr))< echo 'Массив пустой'; >else < echo 'Есть элементы'; >// Массив будет не пустым даже если в нем только кавычки.
Функция empty сработает только в том случае, когда в массиве нет вообще никаких элементов. Поэтому ее лучше не использовать при проверке массивов. В этом случае нам поможет еще одна функция — array_diff. С ее помощью мы сравним исходный массив с другим массивом и в случае расхождения выведем элементы массива, которые не совпадают. Может быть немного сумбурно и не понятно, но давайте разберем на примере.
1 2 3 4
$arr = ['name', '', 'num', NULL, '', false, 'Alex', '']; var_dump($arr); $new_arr = array_diff($arr, array('', NULL, false)); var_dump($new_arr);
$arr = [‘name’, », ‘num’, NULL, », false, ‘Alex’, »]; var_dump($arr); $new_arr = array_diff($arr, array(», NULL, false)); var_dump($new_arr);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
array(8) { [0]=> string(4) "name" [1]=> string(0) "" [2]=> string(3) "num" [3]=> [4]=> string(0) "" [5]=> [6]=> string(4) "Alex" [7]=> string(0) "" } array(3) { [0]=> string(4) "name" [2]=> string(3) "num" [6]=> string(4) "Alex" }
array(8) < [0]=>string(4) «name» [1]=> string(0) «» [2]=> string(3) «num» [3]=> [4]=> string(0) «» [5]=> [6]=> string(4) «Alex» [7]=> string(0) «» > array(3) < [0]=>string(4) «name» [2]=> string(3) «num» [6]=> string(4) «Alex» >
Функция пропустит все пустые элемент массива, в том числе NULL и false и выведет только те, в которых что-то есть. Мы так же можем проверить какой именно элемент массива был пустой с помощью цикла for.
1 2 3 4 5 6 7 8
$arr = ['name', '', 'num', NULL, '', false, 'Alex', '']; for($i=0; $i count($arr); $i++) { if (empty($arr[$i])){ echo "Элемент $i пустой"."
"; }else{ echo "Элемент $i не пустой"."
"; } }
В итоге получим это:
1 2 3 4 5 6 7 8
Элемент 0 не пустой Элемент 1 пустой Элемент 2 не пустой Элемент 3 пустой Элемент 4 пустой Элемент 5 пустой Элемент 6 не пустой Элемент 7 пустой
Элемент 0 не пустой Элемент 1 пустой Элемент 2 не пустой Элемент 3 пустой Элемент 4 пустой Элемент 5 пустой Элемент 6 не пустой Элемент 7 пустой
Но массивы бывают разные, в том числе с ключами и значениями. И цикл for в этом случае тоже справится точно так же.
1 2 3 4 5 6 7 8
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; for($i=0; $i count($arr); $i++) { if (empty($arr[$i])){ echo "Элемент $i пустой"."
"; }else{ echo "Элемент $i не пустой"."
"; } }
При желании можно принудительно удалить ключи массива, в которых пустые значения. Для этого задействуем цикл foreach и функцию unset.
1 2 3 4 5 6 7 8
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; var_dump($arr); foreach ($arr as $key => $value) { if (empty($value)) { //проверrf на пустоту unset($arr[$key]); // Удаляем ключ массива } } var_dump($arr);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
array(4) { ["age"]=> int(34) ["name"]=> string(4) "Ivan" ["city"]=> string(0) "" ["number"]=> string(0) "" } array(2) { ["age"]=> int(34) ["name"]=> string(4) "Ivan" }
array(4) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» [«city»]=> string(0) «» [«number»]=> string(0) «» > array(2) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» >
Проверить наличие элемента в массиве
Для этих целей подойдет функция in_array. Она проверяет на присутствие в массиве значения.
1 2 3 4 5 6 7
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; if (in_array('Ivan', $arr)) { echo 'YES'; }else{ echo 'NO'; }
$arr=[‘age’=> 34,’name’=>’Ivan’,’city’=>», ‘number’=>»]; if (in_array(‘Ivan’, $arr)) < echo 'YES'; >else
Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.
