[英]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.