Ответ 1
функция emptyElementExists()
function emptyElementExists($arr) {
return array_search("", $arr) !== false;
}
Пример:
$var = array( "text1", "", "text3" );
var_dump( emptyElementExists($var) );
Вывод:
BOOL (истина)
Ссылка
У меня есть массив $var, и я бы хотел возвратить FALSE, если один или несколько элементов в массиве пустые (я имею в виду, что строка "").
Я думаю, что array_filter()
- лучший способ, но я не знаю, как его фильтровать таким образом.
Как я могу это сделать?
function emptyElementExists($arr) {
return array_search("", $arr) !== false;
}
Пример:
$var = array( "text1", "", "text3" );
var_dump( emptyElementExists($var) );
Вывод:
BOOL (истина)
Ссылка
if (array_search('', $var)!==false) return FALSE;
Если вы хотите иметь функцию, которая проверяет, является ли элемент в массиве ложным, вы можете написать свою собственную функцию, которая:
array_filter принимает массив и функцию, затем выполняет итерацию через массив и отправляет в каждый элемент указанной функции. Если функция возвращает true, элемент хранится в массиве, и если функция возвращает false, элемент извлекается из массива.
Вы видите разницу, не так ли?
Или явно, как предложено @Ancide:
$var = array("lorem", "ipsum", "dolor");
$emptyVar = array("lorem", "", "dolor");
function has_empty($array) {
foreach ($array as $value) {
if ($value == "")
return true;
}
return false;
}
echo '$var has ' . (has_empty($var) ? 'empty values' : 'no empty values');
echo '<br>';
echo '$emptyVar has ' . (has_empty($emptyVar) ? 'empty values' : 'no empty values');
EDIT:
Сначала я не был уверен, если array_search()
останавливается при первом вхождении. После проверки источника PHP кажется, что подход array_search()
должен быть быстрее (и короче). Таким образом, версия @Wh1T3h4Ck5 была бы предпочтительнее, я полагаю.
Если вы действительно хотите проверить, существует ли одна или несколько пустых строк, это просто. Вы можете сделать,
in_array('', $var, true);
Возвращает true, если пустая строка (''
) существует по крайней мере в одном из значений массива, иначе false.
Вы также можете ссылаться на этот аналогичный вопрос,
как проверить, имеет ли массив value === null без цикла?