簡體   English   中英

檢查所有數組項是否為空PHP

[英]Checking if all the array items are empty 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>';

您可以使用內置的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>';
}

使用空膠水內爆數組並檢查結果字符串的大小:

<?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"] );

以這種方式簡化使用:

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

我有同樣的問題,但想分別檢查數組中的每個元素,看看哪一個是空的。 這比預期的要困難,因為您需要在單獨的數組中創建鍵值和實際值以檢查並響應空數組元素。

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
)

數量不能為空。

沒有測試但是你得到了邏輯:)

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

您還必須將數組值的封裝更改為雙引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM