簡體   English   中英

PHP檢查“多維數組(array([key] => value))”的值是否為空

[英]PHP check if “multidimensional array(array([key]=>value))” values are empty

我有這個數組,我正在從Laravel中將其發布到我的控制器,並且試圖檢查數組中是否有任何值。 數組被初始化並發送到視圖,在視圖內部,我有一個要填充輸入的表,如果用戶不填寫表並提交表單,則數組將返回如下:

Array
(
[51] => Array
    (
        [5] => 
        [2] => 
        [8] => 
    )

[78] => Array
    (
        [18] => 
        [23] => 
        [21] => 
    )
)

為了澄清和溝通:

array(
   [key1]=>array
           (
              [key1_1]=>value
           )
)

並且我想檢查所有value是否為空,在此示例中,它們是否與一維數組的empty($array)類似。

我已經試過array_filter()但是如果值在數組內的鍵內的鍵內,則它不起作用。

我知道我可以使用foreach進入到key1 ,然后foreach再次進入key1_1和遞歸檢查值為null或不並返回false並打破循環一旦某個值不為空。

但是,PHP中是否還有其他方法或方法可以檢查這些值? 類似於empty($array)但在數組內部並僅檢查value 或具有empty(array_filter(array_filter($array)))邏輯的東西?

還是沒有其他方法,只能通過使用foreach手動遞歸檢查每個值?

注意:我使用的是Laravel 5.5,PHP 7.1.9

注意:我不是在嘗試查找特定值是否為null,而是詢問PHP中是否有內置方法或比用於檢查值是否全部為null的方法簡單的方法。

一種實現方法是使用array_reduce並將空數組作為起始值。 然后在回調函數中使用array_merge

最后,您可以使用array_filter刪除空條目,然后計算最終數組中的項目。

$arrays = [
    51 => [
        5 => "",
        2 => "",
        8 => "77"
    ],
    78 => [
        18 => "",
        23 => "99",
        21 => ""
    ]
];

$result = array_reduce($arrays, function($carry, $item) {
    $carry = array_merge($carry, $item);
    return $carry;
}, []);

使用所有空值進行測試

用值測試

array_map('array_filter', $array)將刪除所有內部的空值,從而使數組變為類似:

[
    51 => [],
    78 => [
        18 => 'not empty'
    ]
]

然后再次使用array_filter刪除所有空數組。 綜上所述:

if (!array_filter(array_map('array_filter', $array))) {
    echo 'The array is completely empty';
}

如果您僅嘗試獲取陣列中的空插槽數,則此方法應該起作用。

$myArray = ["bob", "fred", "bill", "mary", "", "jane", ""];

$count = 0;
foreach($myArray as $key=>$value) {


if(!$value) {
$count++;
}


}
echo $count;

暫無
暫無

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

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