Php 取消设置后如何获取新阵列?
我解码了json数组。并从数组中取消设置“N/A、、-”。当我打印数组时,它会显示未设置的结果和以前的原始数组。我只需要一个未设置的数组。如何返回此新数组Php 取消设置后如何获取新阵列?,php,arrays,json,Php,Arrays,Json,我解码了json数组。并从数组中取消设置“N/A、、-”。当我打印数组时,它会显示未设置的结果和以前的原始数组。我只需要一个未设置的数组。如何返回此新数组 $root_arr = json_decode($data, true); function array_depth(array $array) { foreach ($array as $key => $value) { if (is_array($value)) { array_de
$root_arr = json_decode($data, true);
function array_depth(array $array) {
foreach ($array as $key => $value) {
if (is_array($value)) {
array_depth($value);
}else{
if(($value == "-") || ($value == "") || ($value == "N/A")){
unset($array[$key]);
}
}
}
print_r(array_values($array));
//return $array;
}
array_depth($root_arr);
这就是结果:
通过引用
&
定义传递$array
的函数,并且不返回任何内容。
另外,将$value
作为参考公开,以便对其进行更新:
function array_depth(array &$array) {
foreach ($array as $key => &$value) {
if (is_array($value)) {
array_depth($value);
} else {
if(($value == "-") || ($value == "") || ($value == "N/A")){
unset($array[$key]);
}
}
}
}
array_depth($root_arr);
print_r($root_arr);
这是一个递归操作,因此它当然会在每个调用中显示一个转储。如果你想改变原始数组,你需要通过引用来传递它,因为函数使用的是副本,而不是原始数组。它给了我原始数组。对不起,在循环中忘记了
和$value
。令人惊叹的。谢谢你,伙计。但是你能解释一下为什么我们使用“&$value”吗。因为$array已经像“&$array”一样作为引用了。顺便说一句,谢谢。foreach
复制数组并循环,因此当您递归传递$value
时,它不会修改原始数组。使用引用更新原始数组。