我发布的数据如下:
array(2) {
["ui"]=> array(1) {
["menu"]=> array(3) {
["button1"]=> string(8) "Press me"
["button2"]=> string(9) "Tickle me"
["button3"]=> string(0) ""
}
}
["messages"]=> array(1) {
["status"]=> array(2) {
["error"]=> string(0) ""
["success"]=> string(0) ""
}
}
}
我想删除所有具有空值的键值对,以获得如下结果:
array(1) {
["ui"]=> array(1) {
["menu"]=> array(2) {
["button1"]=> string(8) "Press me"
["button2"]=> string(9) "Tickle me"
}
}
}
所以我实现了这个递归函数:
function clear_empty_array_values($array){
foreach($array as $key => $value){
if (is_array($value)){
clear_empty_array_values($value);
}else{
if (empty($value)){
unset($array[$key]);
}
}
}
}
但是当我在我的阵列上调用这个函数时:
clear_empty_array_values($my_array);
我得到与调用方法之前相同的结果。
你能看出出了什么问题吗?
答案 0 :(得分:1)
要在展示时修改$my_array
,您需要传递参考&
。然后修改$value
中的foreach
使用引用&
:
function clear_empty_array_values(&$array){
foreach($array as $key => &$value){
if (is_array($value)){
clear_empty_array_values($value);
}
if(empty($value)) {
unset($array[$key]);
}
}
}
答案 1 :(得分:0)
这样做: function clear_empty_array_values(& $ array)
或者,您必须返回值:
function clear_empty_array_values($array){
foreach($array as $key => $value){
if (is_array($value)){
$array[$key] = clear_empty_array_values($value);
}else{
if (empty($value)){
unset($array[$key]);
}
}
}
return $array;
}