Проверить, пуст ли массив без использования цикла?
Есть ли в PHP какая-либо функция для проверки, является ли массив пустым или как я могу сделать это без использования цикла?
Например: $b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
Как проверить, что массив $b содержит пустые значения без использования цикла?
7 ответов
Просто:
function allEmpty($array)
{
return empty(array_filter($array)); // (PHP < 5.3) or
$array = array_filter($array); return empty($array); // (PHP >= 5.3) or just
return array_filter($array) === array();
}
function someEmpty($array)
{
return ($array !== array_filter($array));
}
Независимо от того, используете ли вы цикл или какую-либо функцию массива, вы по-прежнему просматриваете массив, поэтому сохраняйте его простым и просто проходите по массиву:
function isEmpty($arr) {
foreach ($arr as $k => $v) {
if ($v) {
return false;
}
}
return true;
}
В зависимости от того, что вы хотите определить как пустое, вы можете проверить только пустые строки:
function isEmpty($arr) {
foreach ($arr as $k => $v) {
if ($v === '') {
return false;
}
}
return true;
}
Если это конкретный массив, который вы хотите проверить (то есть: он имеет только key=>values и пусто всегда key=>'') ...
$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
$temp = array_flip($b);
if(count($temp) === 1 && empty($temp[0])){
echo 'empty';
}
В противном случае вам придется использовать цикл... извините.
Если вы хотите проверить наличие пустых строк ''
Вы можете использовать in_array
if(!in_array('', $array)) echo 'array doesn’t contain empty strings';
if(in_array('', $array)) echo 'array does contain at least one empty string';
Вы также можете попробовать http://php.net/array_filter с пустым методом обратного вызова и сравнить его с пустым массивом (или использовать empty()
):
if(empty(array_filter($array))) echo 'array only contains values evaluating to false';
Проще говоря, нет.
Если вы не хотите делать буквальный foreach/for/while, вы можете использовать array_walk.
Я обычно проверяю это, используя следующее условие:
if(is_array($array) and count($array)) {
// ... code here ...
}
Это все.
Просто
if(!array_filter($array)){
//Is empty
}
else
{
//Is not empty
}
выполнять работу.