Проверка на массив, на наличие элементов и на пустоту в PHP

    Комментариев нет 887

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

В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.

1
2
3
4
5
6
$arr = ['id', 'name', 'email']; // Массив элементов
if(is_array($arr)){
  echo 'Это массив';
}else{
  echo 'Это не массив';
}

Функция вернет 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 'Есть элементы';
}
// Массив будет не пустым даже если в нем только кавычки.

Функция 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);

Получим следующее:

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"
}

Функция пропустит все пустые элемент массива, в том числе 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 пустой"."<br>";
}else{
echo "Элемент $i не пустой"."<br />";
}
 }

В итоге получим это:

1
2
3
4
5
6
7
8
Элемент 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 пустой"."<br>";
}else{
echo "Элемент $i не пустой"."<br />";
}
 }

При желании можно принудительно удалить ключи массива, в которых пустые значения. Для этого задействуем цикл 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"
}

Проверить наличие элемента в массиве

Для этих целей подойдет функция 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';
}

Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.

Добавить страницу в закладки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *