Подтвердить что ты не робот

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

Ответ 1

Вы можете просто использовать встроенный 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>';
}

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Вы можете делегировать проверку достаточно простой функции:

// returns true if $arr has a
// value for _any_ of the $keys
function check_if_any( $arr, $keys ) {
  foreach( $keys as $key ) {
     if( $arr[$key] ) return true;
  }
  return false;
}

$has_any = check_if_any( $_POST, array( "Username", "RequestAssignee", ... ) );

Ответ 6

У меня работает, и

if(!array_sum($array)){
   //Values are empty do something
}

Ответ 7

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

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

Ответ 8

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

$array = array("demoKey1" => "", "demoKey2" => "2");    

if(count(array_flip($array)) > 1){ 
      // keys not empty
      // for example count is 2
}

Ответ 9

Упростим использовать этот способ:

$is_empty = true;

foreach ($array as $key => $value) {
    if ($value != '')
        $is_empty = false;
}
if ($is_empty)
    echo 'array is empty!';
else
    echo 'array is not empty!';

Ответ 10

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

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
)

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

Ответ 11

НЕ ИСПРАВЛЯЕТСЯ, НО ВЫ получите логику:)

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

Ответ 12

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

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

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