我想从以下阵列值提取到一个新的数组:组合数组忽略空值?
我收到与foreach
命令的帮助,但我现在不得不合并两个数组,其中之一有null
值的麻烦。
原始数组:http://pastebin.com/jeKVxpka
使用下列内容:
foreach ($arr['products']['product'] as $num) {
$pid = $num['pid'];
foreach($num['configoptions']['configoption']['0']['options']['option'] as $option)
{
$name = $option['name'];
$yearlycosts = $option['pricing']['GBP']['monthly'];
$namearr[] = $name;
$yearlyarr[] = $yearlycosts;
$peryear = array_combine($namearr, $yearlyarr);
}
$pricing[$pid] = array('cost' => $peryear);
}
print_r($pricing);
我已经能够产生以下数组:
Array
(
[2] => Array
(
[cost] => Array
(
[1 Year] => 4.17
[2 Years] => 8.33
[3 Years] => 12.50
[4 Years] => 16.67
[5 Years] => 20.83
)
)
[3] => Array
(
[cost] => Array
(
[1 Year] => 40.83
[2 Years] => 8.33 <---
[3 Years] => 12.50 |--- These values shouldn't be here!
[4 Years] => 16.67 |
[5 Years] => 20.83 <---
)
)
[4] => Array
(
[cost] => Array
(
[1 Year] => 49.17
[2 Years] => 79.17
[3 Years] => 115.83
[4 Years] => 149.17
[5 Years] => 190.83
)
)
)
的问题是,如果你看看在原始阵列中,没有产品ID [3]
的价格信息。对于产品ID [2]
,2至5年的数据已填充2至5年的值。
我已使用array_filter
和unset
进行了实验,但我无法弄清楚如何防止这种情况发生(或为什么会发生)。
为什么每次通过循环执行'array_combine',而不是循环完成时? – Barmar
现在看来这显然是错误的。谢谢。 –