Подтвердить что ты не робот

Проверьте, имеет ли массив одно или несколько пустых значений

У меня есть массив $var, и я бы хотел возвратить FALSE, если один или несколько элементов в массиве пустые (я имею в виду, что строка "").

Я думаю, что array_filter() - лучший способ, но я не знаю, как его фильтровать таким образом.

Как я могу это сделать?

4b9b3361

Ответ 1

функция emptyElementExists()

function emptyElementExists($arr) {
  return array_search("", $arr) !== false;
  }

Пример:

$var = array( "text1", "", "text3" );
var_dump( emptyElementExists($var) );

Вывод:

BOOL (истина)

Ссылка

Ответ 2

if (array_search('', $var)!==false) return FALSE;

Ответ 3

Если вы хотите иметь функцию, которая проверяет, является ли элемент в массиве ложным, вы можете написать свою собственную функцию, которая:

  • Итерации через массив
  • Для каждого цикла проверьте, соответствует ли текущее значение элемента ""
  • Если значение не равно "" запустить следующий цикл
  • Если значение "" прерывает цикл путем возврата False

array_filter принимает массив и функцию, затем выполняет итерацию через массив и отправляет в каждый элемент указанной функции. Если функция возвращает true, элемент хранится в массиве, и если функция возвращает false, элемент извлекается из массива.

Вы видите разницу, не так ли?

Ответ 4

Или явно, как предложено @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 была бы предпочтительнее, я полагаю.

Ответ 5

Если вы действительно хотите проверить, существует ли одна или несколько пустых строк, это просто. Вы можете сделать,

in_array('', $var, true);

Возвращает true, если пустая строка ('') существует по крайней мере в одном из значений массива, иначе false. Вы также можете ссылаться на этот аналогичный вопрос, как проверить, имеет ли массив value === null без цикла?