Как проверить пустой ли массив php
Перейти к содержимому

Как проверить пустой ли массив php

  • автор:

Как лучше всего проверить что в массиве нет элементов?

Да все, в общем, корректны. Только в первом и четвертом случаях будет преобразование типа к bool, а третий подойдет только для индексных массивов. Есть еще вариант sizeof($arr) .

Отслеживать
20.4k 3 3 золотых знака 27 27 серебряных знаков 49 49 бронзовых знаков
ответ дан 20 мар 2012 в 8:20
14.7k 1 1 золотой знак 26 26 серебряных знаков 48 48 бронзовых знаков
ТРЕТИЙ — НЕ КОРРЕКТНЫЙ. Например, $a = [NULL]; — не пустой массив.
13 ноя 2017 в 2:22

Возможно, наилучший вариант if ($arr === Array())

Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 28 окт 2015 в 19:54
31 1 1 бронзовый знак
Постарайтесь писать более развернутые ответы. Поясните, на чем основано ваше утверждение?
29 окт 2015 в 13:08

ОТВЕТ:

Проверять пуст массив через функции count и sizeof — не стоит, так как он тратить время на обработку. мизерное время, но тратит.

Лучшие варианты это:

1. if($arr) // Проверит на наличие элементов внутри 2. if(empty( $arr )) // Проверит существование переменной с массивом и наличие элементов внутри 3. if(array_shift( $arr )) // Проверит наличие первого элемента 4. if($arr[0]) // Проверит на наличие нулевого элемента, для индексного массива, который начинается с 0 

ИССЛЕДОВАНИЯ:

  1. Данные ответ проверен через микротест со сложным массивом, с 40014 элементов и PHP 7.1
  2. Исполнение скрипта происходило на локальной машине (Open Server 5.2).
  3. Замер происходил через функцию php microtime()
  4. Результат проверялся трижды

РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЙ:

  1. if(count($arr)) : 0.0010001659393311 сек.
  2. if(sizeof($arr)) : 0 сек.
  3. if($array) : 0 сек.
  4. if(empty($arr)) : 0 сек.
  5. if(array_shift($arr)) : 0 сек.
  6. if($arr[0]) : 0 сек.
  1. if(count($arr)) : 0 сек.
  2. if(sizeof($arr)) : 0.0010011196136475 сек.
  3. if($array) : 0 сек.
  4. if(empty($arr)) : 0 сек.
  5. if(array_shift($arr)) : 0 сек.
  6. if($arr[0]) : 0 сек.
  1. if(count($arr)) : 0.00099992752075195 сек.
  2. if(sizeof($arr)) : 0 сек.
  3. if($array) : 0 сек.
  4. if(empty($arr)) : 0 сек.
  5. if(array_shift($arr)) : 0 сек.
  6. if($arr[0]) : 0 сек.

ЧТО Я ЮЗАЮ:

Для себя использую if($arr) <. >и if($arr[0]) <. >, так как нет необходимости вызывать дополнительные функции — обертки

Отслеживать
20.4k 3 3 золотых знака 27 27 серебряных знаков 49 49 бронзовых знаков
ответ дан 13 ноя 2017 в 2:02
29 1 1 бронзовый знак
П.3 какая-то бессмыслица
18 мар 2021 в 9:10

П.4 тоже бессмыслица. проверяет не наличие элемента, а его пустоту. [0] при такой проверке вернет что массив не имеет элементов

18 мар 2021 в 9:28

Более оптимальный так как:

  • Код более читаемый — «Если переменная равна пустому массиву»;
  • Сразу идет контроль типов, и вы действительно сравниваете массив;
  • Не используются функции, а только сравнение, значит этот код будет работать немного быстрее;

Отслеживать
ответ дан 10 мая 2018 в 11:11
Alexey Pavlov Alexey Pavlov
11 2 2 бронзовых знака

В документации сказано, что массив без элементов интерпретируется как false. https://www.php.net/manual/ru/language.types.boolean.php#language.types.boolean.casting

var_dump((bool) array(12)); // bool(true) var_dump((bool) array()); // bool(false) 

Вот я и убедился, что самый быстрый способ

if ( $arr ) <> 
$arr = []; $a1000 = range(0, 1000); // 0,1,2. 1000 for( $i = 0; $i < 1000000; $i++) < $j = rand(0,20); if ( $j === 0 ) < $arr[] = []; >else < shuffle( $a1000 ); $arr[] = array_slice($a1000,0,$j); >> $t = microtime( true ); $n = count_not_empty1( $arr ); $t = microtime(true) - $t; echo 'if ( $a ): N='.$n.' T='.round($t*1000,4).' ms'.PHP_EOL; $t = microtime( true ); $n = count_not_empty2( $arr ); $t = microtime(true) - $t; echo 'if ( $a !== [] ): N='.$n.' T='.round($t*1000,4).' ms'.PHP_EOL; $t = microtime( true ); $n = count_not_empty3( $arr ); $t = microtime(true) - $t; echo 'if ( !empty($a) ): N='.$n.' T='.round($t*1000,4).' ms'.PHP_EOL; $t = microtime( true ); $n = count_not_empty4( $arr ); $t = microtime(true) - $t; echo 'if ( count($a) ): N='.$n.' T='.round($t*1000,4).' ms'.PHP_EOL; function count_not_empty1( &$arr ) < $n = 0; for( $i = 0; $i < 1000000; $i++ ) < if ( $arr[$i] ) < $n++; >> return $n; > function count_not_empty2( &$arr ) < $n = 0; for( $i = 0; $i < 1000000; $i++ ) < if ( $arr[$i] !== [] ) < $n++; >> return $n; > function count_not_empty3( &$arr ) < $n = 0; for( $i = 0; $i < 1000000; $i++ ) < if ( !empty($arr[$i]) ) < $n++; >> return $n; > function count_not_empty4( &$arr ) < $n = 0; for( $i = 0; $i < 1000000; $i++ ) < if ( count($arr[$i]) ) < $n++; >> return $n; > 
if ( $a ): N=952522 T=117.7402 ms if ( $a !== [] ): N=952522 T=122.844 ms if ( !empty($a) ): N=952522 T=125.299 ms if ( count($a) ): N=952522 T=128.9139 ms 

Проверить наличие пустого массива в PHP

В этом посте мы обсудим, как определить, пуст ли массив в PHP.

1. Использование empty() функция

Переменная считается пустой в PHP, если она не существует или если ее значение равно false. empty() Функция возвращает true, если переменная пуста, иначе false. Вы можете использовать empty() функция для проверки пустых массивов. Он возвращает true, если в массиве нет элементов, и false в противном случае.

$array = array ( ) ;
if ( empty ( $array ) ) < echo "Array is empty" ;

The empty() функция вернет true для всех ложных значений (например, false, 0, «», null, array() и т. д.). Если вы специально хотите проверить наличие пустых массивов, вы можете сначала проверить массив, используя is_array() функция.

$array = array ( ) ;
if ( is_array ( $array ) && empty ( $array ) ) < echo "Array is empty" ;

2. Использование оператора отрицания

Поскольку пустой массив в PHP является ложным, вызов empty() можно заменить оператором логического отрицания ( ! ). Оператор логического отрицания неявно преобразует свой операнд в тип bool и возвращает логическое значение, противоположное значению преобразованного операнда. Как и в случае с empty() функцию, вы можете определить, является ли данная переменная массивом с is_array() функция.

$array = array ( ) ;
if ( is_array ( $array ) && ! $array ) < echo "Array is empty" ;

3. Использование оператора сравнения тождеств

Кроме того, вы можете использовать операторы сравнения идентификаторов ( === а также !== ) для проверки наличия пустых массивов в PHP. Выражение $a === $b возвращает истину, если $a равно $b , и они одного типа. Вы можете сравнить свою переменную с array() построить с === оператор, который возвращает true только для пустых массивов и false в противном случае.

$array = array ( ) ;
if ( $array === array ( ) ) < echo "Array is empty" ;

Начиная с PHP 5.4, вы можете использовать синтаксис короткого массива [] . Он работает аналогично тому, как array() построить, но позволяет избежать накладных расходов на вызов функции.

$array = array ( ) ;
echo «Array is empty» ;

4. Использование count() функция

Вы также можете подсчитать общее количество элементов в массиве. count() или же sizeof() будет работать для массивов или объектов, которые реализуют Countable. Для других ложных значений count() выдает фатальную ошибку: Uncaught TypeError: count(): первый аргумент ($value) должен иметь тип Countable|массив.

$array = array ( ) ;
if ( count ( $array ) === 0 ) < echo "Array is empty" ;

5. Использование array_filter() функция

Если вам нужно проверить, содержит ли массив все ложные значения, вы можете передать свой массив в array_filter() функцию и сравнить полученный массив с array() построить или [] синтаксис с === оператор. array_filter() функция фильтрует элементы массива, используя функцию обратного вызова. Если обратный вызов не указан, все ложные значения будут удалены из массива. Это демонстрирует следующее решение:

Как проверить пустой ли массив php

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Уроки и статьи

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube

Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка

Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт

Мой аккаунт Моя группа

Проверить на пустоту все значения массива PHP

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

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

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