
В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык 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{
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 'Есть элементы';
}
// Массив будет не пустым даже если в нем только кавычки. |
$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 пустой"."<br>";
}else{
echo "Элемент $i не пустой"."<br />";
}
} |
$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 пустой |
Элемент 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 />";
}
} |
$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); |
$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{
echo 'NO';
}
Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.