[英]Can't remove empty values from multi-dimensional array PHP
我的多維數組如下所示:
Array
(
[0] => Array
(
[0] => 2010-12-03
[1] => 0
[2] => Array
(
[0] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[1] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[2] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[3] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[4] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[5] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
)
)
[1] => Array
(
[0] => 2010-12-10
[1] => 486
[2] => Array
(
[0] => Array
(
[0] => Bob
[1] => Lucy
[2] => 54
[3] => Y
[4] => PC1Clean
)
[1] => Array
(
[0] => Jo
[1] => Mary
[2] => 432
[3] => Y
[4] => PC2Bar
)
[2] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[3] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[4] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
[5] => Array
(
[0] =>
[1] =>
[2] => 0
[3] =>
[4] =>
)
)
)
我嘗試過array_filter
和不同的循環迭代來刪除zero
/ null
值,例如
function removeElementWithValue($array, $key, $value) {
foreach($array as $subKey => $subArray) {
if($subArray[$key] == $value) {
unset($array[$subKey]);
}
}
}
但是似乎沒有任何作用。 任何幫助將非常感激!
您需要遞歸調用remove函數。 ( 為數組中的每個子值調用該函數,然后該函數將自動為每個子子值等調用自身,直到無法在樹上深入為止 )。
這是一個快速制作(未經測試)的函數,該函數應刪除所有空值(包括數組,如果它們為空):
function removeEmptyElements($array) {
foreach ($array as $key => $value){
if (empty($value)) {
unset($array[$key]);
} else if (is_array($value)) {
$array[$key] = removeEmptyElements($value);
}
}
return $array;
}
也許這個答案為時已晚,但是這里是:
$array = array( // array with examples
array('123',' 456', array(123, null)),
array('', null, '123'),
123,
234,
0,
null,
);
$filterEmptyValues = function($val) use (&$filterEmptyValues) {
foreach($val as $key => $value) {
if (!is_array($value)) {
if (!$value) unset($val[$key]);
}
else $val[$key] = call_user_func($filterEmptyValues, $value);
}
return $val;
};
$array = $filterEmptyValues($array) ;
print_r($array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.