Пройти через Массив и проверить, если любой элемент пуст


Есть ли функция встроенной в PHP, чтобы проехать array и проверить, если любой элемент этого массива является пустой null?

обратите внимание, что следующий код:

if(isset($_POST['btnCriaModelo'])){

  $instArray  = $_POST['idInstrucao'];
  $orderArray = $_POST['ordem'];

  for ($i=1; $i < count($instArray) ; $i++) { 

     /*
       Aqui é onde pensei em fazer essa verificação mas não consigo criar uma lógica.
       A variável auxilar $i começa com o valor 1 por que naturalmente no meu código
       o primeiro elemento destes vetores acima são vazios, porém todos os outros elementos
       não podem se quer um está vazios 
     */

  }               

}

причина, по которой мне нужно сделать эту проверку для проверки с помощью PHP. Если есть какой-то элемент массива пустым, я не ракеля цикл вставки в моей базе.

Author: Maniero, 2014-01-31

10 answers

Самое простое решение вашей проблемы:

$valido = (false === array_search(false , $instArray, false));

Например: http://phpfiddle.org/main/code/wuy-79m

 7
Author: Carlos André Ferrari, 2014-01-31 11:02:40

Имеет много способов доказать, является ли элемент пустым. Например, по такой схеме:

if (elemento é vazio) {
    faça qualquer coisa
}

Необходимо определить, что означает "пустой": означает, null? 0 пуст? логическое значение false пуст? пустая строка ("") пуст? и пространство " "?

, То есть множество способов создать свой условное, каждая возвращает true false секунду содержимое переменной, некоторые считают 0 пустота, а не другие...

Приведены некоторые пример.

Функция is_null()

Возвращает true, только если элемент не существует или равен null.

if (is_null($elemento)) {
    // O elemento é vazio, faça qualquer coisa
}

Функция empty()

Возвращает true", если элемент не существует, равно null, равно false, равно "", равно 0, равно 0.0, равно "0" или равно array() (пустой массив).

if (empty($elemento)) {
    // O elemento é vazio, faça qualquer coisa
}

Функция isset()

Возвращает false, только если элемент не не существует или равен null.

if (!isset($elemento)) {
    // O elemento é vazio, faça qualquer coisa
}

Логических Операторов

Вы Также можете использовать логические операторы, чтобы доказать равенство с одной или несколькими из возможных renderings "пусто". Например:

if ($elemento === 0) {
    // O elemento é exatamente o número inteiro "zero", faça qualquer coisa
}

if ($elemento === "") {
    // O elemento é exatamente um string vazio, faça qualquer coisa
}
 7
Author: albertedevigo, 2014-01-31 09:59:40

Вы можете использовать array_filter родном php.

Пример:

<?php

$entry = array(
    0 => 'foo',
    1 => false,
    2 => -1,
    3 => null,
    4 => ''
);

print_r(array_filter($entry));

Вывод будет такой:

Array
(
  [0] => foo
  [2] => -1
}

Например, array_filter проигнорировал, который содержит значения false, null empty.

В Этом случае вы можете перебирать результаты с допустимыми.

 4
Author: paulomartinhago, 2014-01-31 13:25:12

Массивы ассоциативные лучше всего использовать foreach потому, что ключи вашего массива не являются numeráveis, где цикл for могут быть использованы как у вас есть в вашем вопросе:

Asim пример:

if (isset($_POST['btnCriaModelo'])) {
    $instArray = $_POST['idInstrucao'];
    $orderArray = $_POST['ordem'];

    foreach($instArray as $chave => $valor){ //se não quer a chave pode usar só ($instArray as $valor)
        if($valor != ''){  
            // fazer qualquer coisa no caso de não ser vazio
            echo 'A idInstrucao é: '.$chave.' e o seu valor é: '.$valor;
        }
    }
}

Демо

 3
Author: Sergio, 2014-01-31 09:42:38

Если вы идете пройти весь массив, вы можете использовать is_null, чтобы проверить, если это null или нет, и empty, если он пустой или нет.

<?php
$arr = array('teste', 'teste 2', 123, '', null, false);
foreach ($arr as $value) {
    if (is_null($value)) {
        echo 'Nulo';
    } else if (empty($value)) {
        echo 'Vazio';
    } else {
        echo $value;
    }
}

Помня, что empty проверяет, если переменная пуста, так как albertedevigo говорил, что если вы, как 0, false или - "" он возвращает true

 3
Author: IgorCarvalho, 2014-01-31 10:44:36

Если вы просто хотите, чтобы найти первое вхождение, вы можете использовать функции in_array, array_search.

, Если вы хотите найти все вхождения, если есть более чем один, лучше пройти через массив, используя foreach.

 2
Author: mlemos, 2014-01-31 14:33:42

Вы можете охватить array и завершить цикл, так что array найти пустой элемент:

$erro = false;
foreach ( $meuArray as $valor ) :
  if ( empty($valor) || $valor === null ) :
    $erro = 'Opa! Você está com campos vazios!';
    break; // Esse break encerrará o foreach!
  endif;
endforeach;

if ( !$erro ) :
  // Você pode gravar no banco!
endif;
 1
Author: William, 2014-01-31 13:25:35

Вы можете использовать функцию in_array PHP, как показано в следующем примере:

if(in_array(NULL, $variavel)){
   /*Tem valor NULL em uma variável*/
}
 1
Author: Ricardo Fiorani, 2014-01-31 15:44:50

И В случае, уже говорили ранее о роли empty, который проверяет, если значение равно null, "", 0, array().

Функция array_filter() удалить любое из них, упомянутых в массив, переданный как параметр.

И В несколько строк, есть ли способ проверить, существует ли значение пустой внутри массива, то есть, сравнивая исходного массива с массивом "фильтруются"

<?php

$array = array('teste', 'outro teste', array(), 0);

if($array === array_filter($array)){
   echo 'Não existem elementos vazios';
}
else{
   echo 'Existem elementos vazios';
}
 0
Author: Wallace Maxters, 2014-03-20 15:52:57
$posicoesVazias = array_keys($array, '', TRUE);

if(empty($posicoesVazias)){

    // Sem itens vazios

}else{

    echo "Os itens " . implode(', ', $posicoesVazias) . " estão vazios.";

}
 0
Author: Jonas, 2020-01-29 17:38:09