php проверить пуст ли массив
Как проверить, пуст ли массив с помощью PHP?
17 ответов
Если вам просто нужно проверить, есть ли какие-либо элементы в массиве
Если вам нужно убрать пустые значения перед проверкой (обычно делается для предотвращения explode ing странные строки):
пустой массив falsey в PHP, поэтому вам даже не нужно использовать empty() как предлагали другие.
некоторые достойные ответы, но просто подумал, что я немного расширю, чтобы объяснить более четко, когда PHP определяет, пуст ли массив.
массив с ключом (или ключами) будет определяться как не пусто по PHP.
поскольку значения массива нуждаются в ключах, наличие значений или отсутствие в массиве не определяет, пусто ли оно, только если нет ключей (и, следовательно, нет значений).
поэтому проверка массив с empty() не просто говорит вам, есть ли у вас значения или нет, он говорит вам, если массив пуст, а ключи являются частью массива.
поэтому рассмотрите, как вы производите свой массив, прежде чем решать, какой метод проверки использовать.
Например, массив будет есть ключи, когда пользователь отправляет HTML-форму, когда каждое поле формы имеет имя массива (т. е. name=»array[]» ).
А непустых массив будет произведен для каждого поля по мере того как будет автоматически увеличенные значения ключей для каждого массива поля формы.
возьмите эти массивы, например:
если вы отзовете ключи массива и значения для вышеуказанных массивов, вы получите следующее:
МАССИВ ОДИН:
[UserKeyA] => [UserValueA]
[UserKeyB] = > [UserValueB]
МАССИВ ДВА:
[0] => [UserValue01]
[1] => [UserValue02]
и тестирование вышеуказанных массивов с помощью empty() возвращает следующие результаты:
МАССИВ ДВА:
$ArrayTwo не пуст
МАССИВ ТРИ:
$ArrayThree не пуст
массив всегда будет пустым, когда вы назначаете массив, но не используйте его после этого, например as:
это будет пусто, т. е. PHP вернет TRUE при использовании if empty() на выше.
в этом случае вы можете зациклить массив в foreach, проверяя, имеет ли каждый ключ значение. Это хороший метод, если вы в любом случае нужно запустить массив, возможно, проверяя ключи или санируя данные.
однако это не лучший метод, если вам просто нужно знать,» если значения существуют » возвращает правда или FALSE. Существуют различные методы определения того, имеет ли массив какие-либо значения, когда он знает, что у него будут ключи. Функция или класс могут быть лучшим подходом, но, как всегда, это зависит от вашей среды и точных требований, а также от других вещей, таких как в настоящее время вы делаете с массивом (если что).
вот подход, который использует очень мало кода, чтобы проверить, имеет ли массив значения:
используя array_filter() :
Перебирает каждое значение в массиве, передавая их функции обратного вызова. Если функция обратного вызова возвращает true, текущее значение из массива возвращается в массив результатов. Ключи массива сохраняются.
под управлением array_filter() на всех трех массивов (создан в первый блок кода в этом ответе) приводит к следующему:
МАССИВ ДВА:
$arraytwo не пуст
МАССИВ ТРИ:
$arraythree пуст
поэтому, когда нет значений, есть ли ключи или нет, используя array_filter() чтобы создать новый массив, а затем проверить, пуст ли новый массив, показывает, были ли какие-либо значения в исходном матрица.
Это не идеально и немного беспорядочно, но если у вас есть огромный массив и вам не нужно перебирать его по какой-либо другой причине, то это самый простой с точки зрения кода.
у меня нет опыта в проверке накладных расходов, но было бы хорошо знать различия между использованием array_filter() и foreach проверка, Найдено ли значение.
очевидно, что бенчмарк должен быть по различным параметрам, на малых и больших массивах и когда есть ценностей и т. д.
Проверка на массив, на наличие элементов и на пустоту в PHP
В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.
$arr = [‘id’, ‘name’, ’email’]; // Массив элементов if(is_array($arr))< echo 'Это массив'; >else
Функция вернет true, если это массив и false — если не массив. Это простой пример и сложностей возникнуть не должно. Перейдем к следующему примеру.
Проверка массива на пустоту и пустые элементы в PHP
Функция empty сработает только в том случае, когда в массиве нет вообще никаких элементов. Поэтому ее лучше не использовать при проверке массивов. В этом случае нам поможет еще одна функция — array_diff. С ее помощью мы сравним исходный массив с другим массивом и в случае расхождения выведем элементы массива, которые не совпадают. Может быть немного сумбурно и не понятно, но давайте разберем на примере.
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.
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. Она проверяет на присутствие в массиве значения.
Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.
Как с помощью PHP проверить, пуст ли массив?
21 ответ
Если вам просто нужно проверить, есть ли ЛЮБЫЕ элементы в массиве
Если вам нужно очистить пустые значения перед проверкой (обычно это делается для предотвращения explode странных строк):
Некоторые достойные ответы, но просто подумал, что я немного расширился, чтобы более четко объяснить, когда PHP определяет, пуст ли массив.
Поскольку для значений массива нужны ключи, наличие или отсутствие значений в массиве не определяет, пуст ли он, только если нет ключей (и, следовательно, нет значений).
Таким образом, проверка массива с помощью empty() не просто говорит вам, есть ли у вас значения или нет, она сообщает вам, пуст ли массив, а ключи являются частью массива.
Поэтому подумайте, как вы создаете свой массив, прежде чем решать, какой метод проверки использовать.
EG Массив будет иметь ключи, когда пользователь отправит вашу HTML-форму, когда каждое поле формы имеет имя массива (например, name=»array[]» ).
непустой массив будет создан для каждого поля, так как будут автоматически увеличиваться значения ключа для каждого массива поля формы.
Возьмем, к примеру, эти массивы:
Если вы выведете ключи и значения массива для вышеуказанных массивов, вы получите следующее:
МАССИВ ПЕРВЫЙ:
[UserKeyA] => [UserValueA]
[UserKeyB] => [UserValueB]
МАССИВ ВТОРОЙ:
[0] => [UserValue01]
[1] => [UserValue02]
И тестирование вышеуказанных массивов с помощью empty() возвращает следующие результаты:
МАССИВ ВТОРОЙ:
$ ArrayTwo не пуст
МАССИВ ТРЕТИЙ:
$ ArrayThree не пуст
Когда вы назначаете массив, но не используете его в дальнейшем, массив всегда будет пустым, например:
Он будет пустым, т.е. PHP вернет TRUE при использовании if empty() в указанном выше.
В этом случае вы можете зациклить массив в цикле foreach, проверяя, имеет ли каждый ключ значение. Это хороший метод, если вам все равно нужно пройти через массив, возможно, проверить ключи или очистить данные.
Вот подход, который использует очень мало кода для проверки наличия значений в массиве:
Использование array_filter() :
Итерирует по каждому значению в массиве, передавая их функции обратного вызова. Если функция обратного вызова возвращает истину, текущее значение из массива возвращается в массив результатов. Ключи массива сохраняются.
Запуск array_filter() для всех трех примеров массивов (созданных в первом блоке кода в этом ответе) приводит к следующему:
МАССИВ ВТОРОЙ:
$ arraytwo не пуст
МАССИВ ТРЕТИЙ:
$ arraythree пусто
Поэтому, когда нет значений, независимо от того, есть ли ключи или нет, использование array_filter() для создания нового массива, а затем проверка того, является ли новый массив пустым, показывает, были ли какие-либо значения в исходном массиве.
Это не идеально и немного беспорядочно, но если у вас огромный массив и вам не нужно его перебирать по какой-либо другой причине, то это самый простой с точки зрения необходимого кода.
У меня нет опыта в проверке накладных расходов, но было бы неплохо узнать разницу между использованием array_filter() и foreach проверки того, найдено ли значение.
Очевидно, что эталонный тест должен быть на различных параметрах, на малых и больших массивах, когда есть значения, а не и т. Д.
Если вы хотите исключить ложные или пустые строки (например, 0 => » ), в которых использование empty() не сработает, вы можете попробовать:
array_filter() : если обратный вызов не предоставляется, все записи массива равны FALSE (см. преобразование в boolean) будет удален.
Если вы хотите удалить все NULL, FALSE и пустые строки ( » ), но оставить нулевые значения ( 0 ), вы можете использовать strlen в качестве обратного вызова, например:
Если вы хотите выяснить, действительно ли проверяемая вами переменная является явно пустым массивом, вы можете использовать что-то вроде этого:
Я провел тест, приведенный в конце поста. Чтобы сравнить методы:
И получили следующие результаты
Разница между пустым значением и приведением к логическому значению несущественна. Я проводил этот тест несколько раз, и они оказались практически эквивалентными. Кажется, что содержимое массивов не играет значительной роли. Эти два результата дают противоположные результаты, но логического отрицания едва ли достаточно, чтобы подтолкнуть приведение к выигрышу в большинстве случаев, поэтому я лично предпочитаю пустое поле для разборчивости в любом случае.
Почему никто не сказал этого ответа:
Если вы хотите проверить содержимое массива, вы можете использовать:
Я использую этот код
Но обратите внимание, что если массив имеет большое количество ключей, этот код потратит много времени на их подсчет по сравнению с другими ответами здесь.
Для принятия наиболее подходящего решения необходимо знать качество ваших данных и необходимые процессы.
Почему я так подробно объяснил эту очень простую задачу?
Как проверить, пуст ли массив с помощью PHP?
20 ответов
Если вам просто нужно проверить, есть ли в массиве ANY элемент
Если вам нужно очистить пустые значения перед проверкой (обычно это делается для предотвращения explode ing странных строк):
Некоторые достойные ответы, но я просто подумал, что немного расширю, чтобы более четко объяснить, когда PHP определяет, является ли массив пустым.
Массив с ключом (или ключами) будет определен как NOT пустым на PHP.
Поскольку для существования значений массива необходимы ключи, наличие значений в массиве или их отсутствие не определяет, является ли он пустым, только если ключей нет (AND, следовательно, нет значений).
Таким образом, проверка массива с помощью empty() не просто говорит вам, есть ли у вас значения или нет, она говорит вам, является ли массив пустым, а ключи являются частью массива.
Поэтому подумайте, как вы создаете свой массив, прежде чем решать, какой метод проверки использовать.
Например, массив будет иметь ключи, когда пользователь отправит вашу форму HTML, когда каждое поле формы имеет имя массива (т. е. name=»array[]» ).
Для каждого поля будет создан непустой массив, так как для каждого массива полей формы будут автоматически увеличиваться значения ключей.
Возьмем, к примеру, эти массивы:
Если вы отзовете ключи и значения массива для вышеуказанных массивов, вы получите следующее:
МАССИВ ОДИН:
[UserKeyA] => [UserValueA]
[UserKeyB] => [UserValueB]
МАССИВ ДВА:
[0] => [UserValue01]
[1] => [UserValue02]
И тестирование вышеуказанных массивов с помощью empty() возвращает следующие результаты:
МАССИВ ДВА:
$ArrayTwo не пусто
МАССИВ ТРИ:
$ArrayThree не пусто
Массив всегда будет пустым, когда вы назначаете массив, но не используете его после этого, например:
Это будет пусто, т. е. PHP вернет TRUE при использовании if empty() выше.
В этом случае вы можете зациклить массив в foreach, проверяя, имеет ли каждый ключ значение. Это хороший метод, если вам все равно нужно просмотреть массив, возможно, проверить ключи или очистить данные.
Вот подход, который использует очень мало кода для проверки наличия значений в массиве:
Использование array_filter() :
Выполняет итерацию по каждому значению в массиве, передавая их функции обратного вызова. Если функция обратного вызова возвращает true, текущее значение из массива возвращается в результирующий массив. Ключи массива сохраняются.
Запуск array_filter() во всех трех примерах массивов (созданных в первом блоке кода в этом ответе) приводит к следующему:
МАССИВ ДВА:
$arraytwo не пусто
МАССИВ ТРИ:
$arraythree пусто
Поэтому, когда нет значений, независимо от того, есть ключи или нет, использование array_filter() для создания нового массива, а затем проверка, пуст ли новый массив, показывает, были ли какие-либо значения в исходном массиве.
Это не идеально и немного грязно, но если у вас есть огромный массив и вам не нужно перебирать его по какой-либо другой причине, то это самый простой с точки зрения необходимого кода.
Очевидно, что бенчмарк должен быть по различным параметрам, по малым и большим массивам, а также когда есть значения, а не и т. Д.
Если вы хотите убедиться, является ли тестируемая переменная на самом деле явно пустым массивом, вы можете использовать что-то вроде этого:
Если вы хотите исключить ложные или пустые строки (например, 0 => » ), где использование empty() завершится неудачей, вы можете попробовать:
array_filter() : Если обратный вызов не задан, все записи массива, равные FALSE (см. Преобразование в логическое значение), будут удалены.
Если вы хотите удалить все NULL, FALSE и пустые строки ( » ), но оставить нулевые значения ( 0 ), вы можете использовать strlen в качестве обратного вызова, например:
Я запустил бенчмарк, включенный в конце поста. Для сравнения методов:
и получил следующие результаты
Разница между пустым и приведением к логическому значению несущественна. Я провел этот тест несколько раз, и они, по-видимому, по существу эквивалентны. Содержимое массивов, по-видимому, не играет существенной роли. Эти два результата дают противоположные результаты, но логического отрицания едва ли достаточно, чтобы подтолкнуть кастинг к победе в большинстве случаев, поэтому я лично предпочитаю пустой ради разборчивости в любом случае.
Почему никто не сказал этого ответа:
если вы хотите проверить содержимое массива, вы можете использовать:
На мой взгляд, самым простым способом для индексированного массива было бы просто:
Я использую этот код
Но обратите внимание, что если массив содержит большое количество ключей, этот код потратит много времени на их подсчет по сравнению с другими ответами здесь.
Принятие наиболее подходящего решения требует знания качества ваших данных и того, какие процессы должны выполняться.
Я думаю, что важно упомянуть, что при безусловном взрыве вы GUARANTEED генерируете непустой массив. Вот доказательство: Демонстрация Другими словами, проверка того, пуст ли массив, совершенно бесполезна-он будет непустым каждый раз.
Почему я так долго объяснял эту самую основную задачу?
Как проверить, является ли массив пустым с помощью PHP?
Если вам просто нужно проверить, есть ли какие-либо элементы в массиве
Если вам нужно очистить пустые значения перед проверкой (обычно это делается для предотвращения появления explode странных строк):
Пустой массив в PHP ложный, поэтому вам даже не нужно его использовать, empty() как предлагали другие.
Некоторые приличные ответы, но я подумал, что я бы немного расширил их, чтобы объяснить более четко, когда PHP определяет, является ли массив пустым.
Массив с ключом (или ключами) будет определен как НЕ пустой в PHP.
Поскольку для значений массива необходимы ключи, наличие или отсутствие значений в массиве не определяет, является ли он пустым, только если нет ключей (И, следовательно, нет значений).
Так что проверка массива с помощью empty() не просто говорит вам, есть ли у вас значения или нет, она говорит вам, если массив пуст, и ключи являются частью массива.
Поэтому подумайте, как вы создаете свой массив, прежде чем решить, какой метод проверки использовать.
Например, массив будет иметь ключи, когда пользователь отправит вашу HTML-форму, когда каждое поле формы имеет имя массива (т.е. name=»array[]» ).
Для каждого поля будет создан непустой массив, поскольку для каждого массива поля формы будут автоматически увеличиваться значения ключей.
Возьмите эти массивы, например:
Если вы выводите ключи массива и значения для вышеуказанных массивов, вы получаете следующее:
ARRAY ONE:
[UserKeyA] => [UserValueA]
[UserKeyB] => [UserValueB]
ARRAY TWO:
[0] => [UserValue01]
[1] => [UserValue02]
И тестирование вышеупомянутых массивов с empty() возвращает следующие результаты:
ARRAY TWO:
$ ArrayTwo не пусто
ARRAY THREE:
$ ArrayThree не пусто
Массив всегда будет пустым, когда вы назначаете массив, но не используете его после этого, например:
Это будет пустым, то есть PHP вернет TRUE при использовании if empty() на вышеупомянутом.
В этом случае вы можете зациклить массив в foreach, проверяя, имеет ли каждый ключ значение. Это хороший метод, если вам все равно нужно пробежаться по массиву, возможно, проверить ключи или очистить данные.
Вот подход, который использует очень мало кода для проверки, имеет ли массив значения:
Использование array_filter() :
перебирает каждое значение в массиве, передавая их функции обратного вызова. Если функция обратного вызова возвращает true, текущее значение из массива возвращается в массив результатов. Ключи массива сохранены.
Выполнение array_filter() всех трех примеров массивов (созданных в первом блоке кода в этом ответе) приводит к следующему:
Массив 3:
$ arraythree пусто
Поэтому, когда значений нет, есть ли ключи или нет, использование array_filter() для создания нового массива, а затем проверка, является ли новый массив пустым, показывает, были ли какие-либо значения в исходном массиве.
Это не идеально и немного грязно, но если у вас огромный массив и вам не нужно его циклически перебирать по любой другой причине, то это самый простой с точки зрения кода код.
У меня нет опыта в проверке накладных расходов, но было бы хорошо узнать разницу между использованием array_filter() и foreach проверкой, найдено ли значение.
Очевидно, что эталонный тест должен быть по различным параметрам, по маленьким и большим массивам, и когда есть значения, а не и т.д.
Если вы хотите выяснить, является ли тестируемая переменная явно пустым массивом, вы можете использовать что-то вроде этого:
Если вы хотите исключить ложные или пустые строки (например, 0 => » ), где использование empty() не удастся, вы можете попробовать:
array_filter() : Если обратный вызов не предоставлен, все записи массива, равные FALSE (см. Преобразование в логическое значение), будут удалены.
Если вы хотите удалить все NULL, FALSE и пустые строки ( » ), но оставить нулевые значения ( 0 ), вы можете использовать strlen в качестве обратного вызова, например:
Почему никто не сказал этот ответ:
Я провел тест, включенный в конце поста. Чтобы сравнить методы:
и получил следующие результаты
Разница между пустым и приведением к логическому значению незначительна. Я провел этот тест несколько раз, и они, по-видимому, по сути эквивалентны. Содержимое массивов, похоже, не играет существенной роли. Оба дают противоположные результаты, но логического отрицания едва ли достаточно, чтобы подтолкнуть кастинг к победе большую часть времени, поэтому я лично предпочитаю пустой для ясности в любом случае.
если вы хотите проверить содержимое массива, вы можете использовать:
На мой взгляд, самый простой способ для индексированного массива будет просто:
Я использую этот код
Но учтите, что если массив содержит большое количество ключей, этот код потратит много времени на их подсчет по сравнению с другими ответами здесь.
Вы можете использовать, array_filter() который отлично подходит для всех ситуаций:
Я думаю, что лучший способ определить, является ли массив пустым или нет, это использовать count () следующим образом:
Принятие наиболее подходящего решения требует знания качества ваших данных и того, какими процессами следует следовать.
Если вы собираетесь дисквалифицировать / игнорировать / удалить эту строку, то самая ранняя точка фильтрации должна быть в запросе mysql.
Может ли ваше строковое значение содержать значение, 0 которое вы хотите считать истинным / действительным / непустым? Если это так, то вам нужно только проверить, имеет ли значение столбца длину.
Почему я пошел так долго, чтобы объяснить эту самую основную задачу?