Проверка, все ли элементы массива пустые PHP - PullRequest
71 голосов
/ 18 февраля 2011

Я добавляю массив элементов из формы, и если все они пусты, я хочу выполнить некоторую проверку и добавить строку ошибки.Итак, у меня есть:

$array = array(
    'RequestID'       => $_POST["RequestID"],
    'ClientName'      => $_POST["ClientName"],
    'Username'        => $_POST["Username"],
    'RequestAssignee' => $_POST["RequestAssignee"],
    'Status'          => $_POST["Status"],
    'Priority'        => $_POST["Priority"]
);

И затем, если все элементы массива пусты, выполните:

$error_str .= '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>';

Ответы [ 9 ]

151 голосов
/ 18 февраля 2011

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

Если обратный вызов не предоставлен, все записи ввода, равные FALSE (см. Преобразование в логическое значение), будут удалены.

Так можно сделать это одной простой строкой.

if(!array_filter($array)) {
    echo '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>';
}
17 голосов
/ 18 февраля 2011

разверните массив пустым клеем и проверьте размер полученной строки:

<?php if (strlen(implode($array)) == 0) echo 'all values of $array are empty'; ?>
7 голосов
/ 19 июля 2016

Более старый вопрос, но я подумал, что попал в свое решение, поскольку оно не было перечислено выше.

function isArrayEmpty($array) {
    foreach($array as $key => $val) {
        if ($val !== '')
            return false;
    }
    return true;
}
3 голосов
/ 18 февраля 2011

вам на самом деле это не нужно.
Вы собираетесь проверять эти поля отдельно, и, завершив этот процесс, вы сможете определить, был ли массив пустым (или содержит недопустимые значения, что совпадает)

0 голосов
/ 06 июля 2019

упростите использование этого способа:

$array = []; //target array
$is_empty = true; //flag

foreach ($array as $key => $value) {
    if ($value != '')
        $is_empty = false;
}
if ($is_empty)
    echo 'array is empty!';
else
    echo 'array is not empty!';
0 голосов
/ 02 мая 2018

У меня был тот же вопрос, но я хотел проверить каждый элемент в массиве отдельно, чтобы увидеть, какой из них был пустым.Это оказалось сложнее, чем ожидалось, поскольку вам нужно создать ключевые значения и фактические значения в отдельных массивах для проверки и ответа на пустой элемент массива.

print_r($requestDecoded);
$arrayValues = array_values($requestDecoded);  //Create array of values
$arrayKeys = array_keys($requestDecoded);      //Create array of keys to count
$count = count($arrayKeys);
for($i = 0; $i < $count; $i++){  
    if ( empty ($arrayValues[$i] ) ) {         //Check which value is empty
        echo $arrayKeys[$i]. " can't be empty.\r\n";
    } 
}

Результат:

Array
(
    [PONumber] => F12345
    [CompanyName] => Test
    [CompanyNum] => 222222
    [ProductName] => Test
    [Quantity] =>
    [Manufacturer] => Test
)

Количество не может быть пустым.

0 голосов
/ 18 февраля 2011

это довольно просто:

foreach($array as $k => $v)
{
    if(empty($v))
    {
        unset($array[$k]);
    }
}
$show_error = count($array) == 0;

вам также придется изменить инкапсуляцию для значений массива на двойные кавычки.

0 голосов
/ 18 февраля 2011

Ваше определение $ array неверно и содержит одинарные кавычки.Следует читать:

$array = array( 'RequestID' =>  $_POST["RequestID"],
                'ClientName' => $_POST["ClientName"],
                'Username' => $_POST["Username"],
                'RequestAssignee' => $_POST["RequestAssignee"],
                'Status' => $_POST["Status"],
                'Priority' => $_POST["Priority"] );
0 голосов
/ 18 февраля 2011

НЕ ПРОВЕРЕНО, НО ПОЛУЧИТЕ ЛОГИКУ :)

$error = 0;
foreach ($array as $k => $v){
    if (empty($v)) {
        $error++;
    }
}

if ($error == count($array)) {
    $error_str .= '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...