Проверка, если все элементы массива пусты 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>';
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