我有一个可能包含零值的数组。
$array = array(3=> 1000, 5=> 0, 6=> 5000, 7 => 0);
由于使用该数组的代码无法管理设置为0的字段,因此我需要删除它们。 (我想在temp数组中存储0作为值的字段):
$zero_array = array();
foreach ($array as $k => $s) {
$zero_array[$k] = $k;
unset($stack[$k]);
}
在核心代码运行之后,我想要将具有0值的字段放回到与它们相同的位置。
核心代码返回如下数组:
$output = array(3 => 10, 6 => 50);
我想添加旧密钥并获取此信息:
$output = array(3 => 10, 5 => 0, 6 => 50, 7 => 0);
答案 0 :(得分:3)
在这种情况下,只需使用array_filter即可删除0值:
$old_array = array(3 => 1000, 5=> 0, 6=> 5000, 7 => 0);
$new_array = array_filter($old_array);
// Now: $new_array = Array ( [3] => 1000 [6] => 5000 )
然后,做你想要的事情$new_array
// Core code: Divide each element by 100:
$new_array = array(3 => 10, 6 => 50);
然后使用array union operator后跟ksort来获取所需的数组:
$array = $new_array + $old_array;
ksort($array);
// Now: Array ( [3] => 10 [5] => 0 [6] => 50 [7] => 0 )
注意:如果Array ( [3] => 10 [6] => 50 [5] => 0 [7] => 0 )
可以接受(IE。所有与所需数组相同的键值对,只是顺序不同),那么您可以跳过对ksort的调用。