players
будет либо пустым, либо списком, разделенным запятыми (или одним значением). Какой самый простой способ проверить, пуст ли он? Я полагаю, что это можно сделать, как только я получу массив $gameresult
в $gamerow
? В этом случае, вероятно, было бы эффективнее пропустить взрыв $playerlist
, если он пуст, но ради аргумента, как мне проверить, пуст ли массив?
$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow['players']);
Если вам просто нужно проверить, есть ли в массиве ЛЮБЫЕ элементы
if (empty($playerlist)) {
// list is empty.
}
Если вам нужно очистить пустые значения перед проверкой (обычно это делается для предотвращения explode
странных строк):
foreach ($playerlist as $key => $value) {
if (empty($value)) {
unset($playerlist[$key]);
}
}
if (empty($playerlist)) {
//empty array
}
Пустой массив является ложным в PHP, поэтому вам даже не нужно использовать empty()
, как предлагали другие.
<?php
$playerList = array();
if (!$playerList) {
echo "No players";
} else {
echo "Explode stuff...";
}
// Output is: No players
PHP empty()
определяет, если переменная не существует или имеет ложное значение (как array()
, 0
, null
, false
и т.д.).
В большинстве случаев вы просто хотите проверить !$emptyVar
. Используйте empty($emptyVar)
, если переменная могла быть не установлена и вы не хотите вызвать E_NOTICE
; IMO это вообще плохая идея.
Некоторые достойные ответы, но просто думал, что я'd и расширить немного, чтобы более четко объяснить, когда PHP определяет, если массив пуст.
Основные Ноты:
Массив с ключом (или ключами) будет определяться как не пусто с помощью PHP.
Так как значением массива нужны ключи, чтобы существовать, не имея значения или нет в массиве не'т определить, если это'никого не было, только если нет ключей (и, следовательно, никакого значения).
Так что проверять массив с пустой()
не'Т просто сказать вам, если у вас есть ценности или нет, это говорит вам, если массив пуст, и ключи являются частью массива.
Вот и считайте, сколько вы производите свой массив, прежде чем решить, какой метод проверки использовать.
Например, массив будет иметь ключи, когда пользователь отправляет HTML-форму, когда каждое поле формы имеет имя массива (т. е. имя="и массив[]"
в).
А непустых массив будет производиться для каждого поля будет автоматически увеличено ключевых значений для каждого поля формы'ы время.
Возьмите эти массивы например:
/* Assigning some arrays */
// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");
// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";
// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '';
$ArrayThree[] = '';
Если вы эхо из ключи массива и значения для указанных выше массивов, вы получите следующее:
массив один: [UserKeyA] => [UserValueA] [UserKeyB] => [UserValueB]
выбора два: [0] => [UserValue01] [1] => [UserValue02]
массив три: [0] => [] [1] => []
И испытания указанных выше массивов с пустой()
возвращает следующие результаты:
массив один: и GT; $ArrayOne не пустой
выбора два: и GT; $ArrayTwo не пустой
массив три: и GT; $ArrayThree не пустой
Массив всегда будет пустым, когда вы присваиваете массив, но Дон'т использовать его в дальнейшем, такие как:
$ArrayFour = array();
Это будет пустым, т. е. PHP будет возвращать true при использовании если "пустая" () на выше.
Так что если Ваш массив имеет ключи - либо, например, форма'ы входные имен или если вы не добавите их вручную (т. е. создать массив с базы данных имена столбцов в качестве ключей и значений/данных из базы данных), то массив не будет пустым()`.
В данном случае, можно просто перебрать массив в цикле foreach, тестирование, если каждый ключ имеет значение. Это хороший метод, если вы все равно нужно пробежаться по массиву, проверяя ключи или данные санировать.
Однако это не самый лучший способ, Если вам просто нужно знать "если существуют ценности", которая возвращает правда или ложь. Существуют различные методы, чтобы определить, если массив имеет никакого значения, когда он's знать он будет иметь ключи. Функция или класс может быть лучший подход, но как всегда все зависит от ваших условий и конкретных требований, а также другие вещи, такие как то, что у вас на данный момент с такими (если что).
Здесь'ы подход, который использует очень мало кода, чтобы проверить, если массив имеет значения:
С помощью array_filter()`: Перебирает каждое значение в массиве, передает их в функцию обратного вызова. Если функция обратного вызова возвращает значение true, текущее значение из массива возвращаются в результирующем массиве. Сохранились ключи массива.
$EmptyTestArray = array_filter($ArrayOne);
if (!empty($EmptyTestArray))
{
// do some tests on the values in $ArrayOne
}
else
{
// Likely not to need an else,
// but could return message to user "you entered nothing" etc etc
}
Запуск `array_filter () на всех трех массивов (создан в первом блоке кода в этом ответе) приводит к следующему:
массив один: и GT; $arrayone не пустой
выбора два: и GT; $arraytwo не пустой
массив три: и GT; $arraythree пуст
Поэтому, когда нет никаких ценностей, есть ли ключи или нет, с помощью array_filter ()`, чтобы создать новый массив и проверить, если массив пуст показывает, если были какие-либо значения в исходном массиве. Она не идеальна и немного сумбурно, но если у вас есть огромный массив, и Дон'т нужно перебрать его по любой другой причине, то это является самым простым в плане кода это необходимо.
Я'м не опытные в проверке накладных расходов, но было бы хорошо знать различия между помощью array_filter () " и " проверка по каждому элементу` если значение найдено.
Очевидно, что ориентиром должны быть от различных параметров, на малых и больших массивов и, когда есть ценности и не и т. д.
Если вы хотите удостовериться в том, что переменная вы тестируете на самом деле явно пустой массив, вы могли бы использовать что-то вроде этого:
if ($variableToTest === array()) {
echo 'this is explicitly an empty array!';
}
Если вы'd, как, чтобы исключить ложные или пустые строки (например, 0 => ''
), где с помощью пустой()` будет выполнена, вы можете попробовать:
if (array_filter($playerlist) == []) {
// Array is empty!
}
array_filter()
: если нет обратного вызова подается, все элементы массива равны false (см. преобразование в boolean) будут удалены.
Если вы'd как удалить все нулевые, ложные и пустые строки (''
), но оставить нулевые значения (0
), вы можете использовать функция strlen
, в качестве обратного вызова, например:
$is_empty = array_filter($playerlist, 'strlen') == [];
если вы не проверить содержимое массива можно использовать:
$arr = array();
if(!empty($arr)){
echo "not empty";
}
else
{
echo "empty";
}
смотрите здесь: на HTTP://codepad.org/EORE4k7v
На мой взгляд самый простой способ для индексированного массива будет просто:
if ($array) {
//Array is not empty...
}
Ан 'если бы' состояние массива будет оценить в true, если массив не пуст и false, если массив пуст. Это **** не применимо для ассоциативных массивов.
Я использую этот код
$variable = array();
if( count( $variable ) == 0 )
{
echo "Array is Empty";
}
else
{
echo "Array is not Empty";
}
Но учтите, что если массив имеет большое количество ключей, этот код будет тратить много времени, считая их, по сравнению с другими ответы здесь.
Вы можете использовать array_filter ()`, который работает во всех ситуациях:
$ray_state = array_filter($myarray);
if (empty($ray_state)) {
echo 'array is empty';
} else {
echo 'array is not empty';
}
empty($gamerow['players'])
Я решил эту проблему с помощью следующего кода.
$catArray=array();
$catIds=explode(',',$member['cat_id']);
if(!empty($catIds[0])){
foreach($catIds as $cat_id){
$catDetail=$this->Front_Category->get_category_detail($cat_id);
$catArray[]=$catDetail['allData']['cat_title'];
}
echo implode(',',$catArray);
}
Это, кажется, работает для всех случаев
if(!empty(sizeof($array)))
Как насчет: в <предварительно> DepartmentPerSchool = массив(); (пустые(is_array($DepartmentPerSchool))) ? $DepartmentPerSchool //или Echo-это не пустой : массив('не установлено'=>'не установлено. Связаться с Администратором'); //или Echo пуст </пред>