Пройти через Массив и проверить, если любой элемент пуст
Есть ли функция встроенной в 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. Если есть какой-то элемент массива пустым, я не ракеля цикл вставки в моей базе.
10 answers
Самое простое решение вашей проблемы:
$valido = (false === array_search(false , $instArray, false));
Например: http://phpfiddle.org/main/code/wuy-79m
Имеет много способов доказать, является ли элемент пустым. Например, по такой схеме:
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
}
Вы можете использовать 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.
В Этом случае вы можете перебирать результаты с допустимыми.
Массивы ассоциативные лучше всего использовать 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;
}
}
}
Демо
Если вы идете пройти весь массив, вы можете использовать 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
Если вы просто хотите, чтобы найти первое вхождение, вы можете использовать функции in_array, array_search.
, Если вы хотите найти все вхождения, если есть более чем один, лучше пройти через массив, используя foreach.
Вы можете охватить 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;
Вы можете использовать функцию in_array
PHP
, как показано в следующем примере:
if(in_array(NULL, $variavel)){
/*Tem valor NULL em uma variável*/
}
И В случае, уже говорили ранее о роли 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';
}
$posicoesVazias = array_keys($array, '', TRUE);
if(empty($posicoesVazias)){
// Sem itens vazios
}else{
echo "Os itens " . implode(', ', $posicoesVazias) . " estão vazios.";
}