我有一个多维数组(键 - 值),并且没有设置某些值,在这种情况下为空,如果是这样,必须从主数组中删除父数组。
我构建的代码只删除空键。
在我的例子中,IT& ES语言翻译键为空,因此我们需要删除此父数组。
$results = $arr =array(
[16] => Array
(
[0] => Array
(
[language] => de
[translation] => blog/beer
)
[1] => Array
(
[language] => en
[translation] => blog/some-slug-yeah
)
[2] => Array
(
[language] => es
[translation] =>
)
[3] => Array
(
[language] => fr
[translation] => blog/paris-big-city
)
[4] => Array
(
[language] => it
[translation] =>
)
[5] => Array
(
[language] => nl
[translation] => blog/nederlands-slug
)
)
[...]//more
)
删除键的功能。
function array_filter_recursive($input){
foreach ($input as &$value){
if (is_array($value)){
$value = array_filter_recursive($value);
}
}
return array_filter($input);
}
$results = array_filter_recursive( $results );
答案 0 :(得分:1)
如果数组总是有2个级别,则不需要递归。
function array_filter_recursive($input){
foreach ($input as &$value){
$value = array_filter($value, function($x) { return !empty($x['translation']); });
}
return $input;
}
答案 1 :(得分:0)
如果你的结构总是这样:
$arr = (
[0] => Array
(
[language] => de
[translation] => blog/beer
)
[1] => Array
(
[language] => en
[translation] => blog/some-slug-yeah
)
你可以这样做:
for($i = 0; $i < count($arr); $i++}
if(!isset($arr[$i]["translation"]){
unset($arr[$i])
}
}
//re-index thee array;
$arr = array_values($arr);