Php 检查数组是否有一个或多个空键,而不是删除父数组
我有一个多维数组键值,有些值没有设置,在这种情况下为空,如果是这样,父数组必须从主数组中删除 我生成的代码只删除空键 在我的示例中,IT&ES语言转换键为空,因此我们需要删除此父数组Php 检查数组是否有一个或多个空键,而不是删除父数组,php,arrays,Php,Arrays,我有一个多维数组键值,有些值没有设置,在这种情况下为空,如果是这样,父数组必须从主数组中删除 我生成的代码只删除空键 在我的示例中,IT&ES语言转换键为空,因此我们需要删除此父数组 $results = $arr =array( [16] => Array ( [0] => Array ( [language] => de
$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 );
如果你的结构总是这样:
$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);
如果数组总是有两个级别,则不需要递归
function array_filter_recursive($input){
foreach ($input as &$value){
$value = array_filter($value, function($x) { return !empty($x['translation']); });
}
return $input;
}