Проверка, если все элементы массива пусты PHP



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



$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>';
611   8  

8 ответов:

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

если обратный вызов не задан, все входные данные, равные FALSE (см. преобразование в boolean), будут удалены.

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

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>';
}

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

<?php if (strlen(implode($array)) == 0) echo 'all values of $array are empty'; ?>

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

function isArrayEmpty($array) {
    foreach($array as $key => $val) {
        if ($val !== '')
            return false;
    }
    return true;
}

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

ваше определение $ array неверно и имеет одинарные кавычки. Оно должно гласить:

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

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

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
)

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

не проверено, но u получить логику :)

$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>';
}

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

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

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

Comments

    Ничего не найдено.