我试图让下面的代码工作好几个小时,但只是不成功。数组的组合
我有这个日期数组:
Array ([0] => Array ([0] => 2007)
[1] => Array ([0] => 2008)
[2] => Array ([0] => 2009)
...
)
这plusMinus之一:
Array ([0] => Array ([plus] => 2 [date] => 2007)
[1] => Array ([minus] => 1 [date] => 2008)
[2] => Array ([minus] => 1 [date] =>)
[3] => Array ([plus] => 1 [date] => 2010 [minus] => 1)
)
我一直在试图将它们组合成这样:所以基本上我想
Array ([0] => Array ([date] => 2007 [plus]=> 2)
[1] => Array ([date] => 2008 [minus]=> 1)
[2] => Array ([date] => 2009 [plusMinus]=> 0)
[3] => Array ([date] => 2010 [plus] => 1 [minus]=>1)
...
)
检查plusMinus数组中是否存在日期数组的值。如果为true,则来自plusMinus数组的日期和值将替换日期数组中的条目。 如果为false,则原始日期数组条目由[plusMinus] => 0键值对补充。
我试图做到这一点的方法是这样的:
foreach ($filler as $key1 => $value1)
{
foreach ($plusMinus as $key2 => $value2)
{
if ($value1['0'] !== $value2['date'])
{
$value1['plusMinus'] = '0';
$result2[$key1][] = $value1;
}
elseif ($value1['0'] == $value2['date'])
{
if (array_key_exists('plus',$value2))
{
$value1['plus'] = $value2['plus'];
$result2[$key1][]=$value1;
}
elseif(array_key_exists('minus',$value2))
{
$value1['minus'] = $value2['minus'];
$result2[$key1][]=$value1;
}
elseif(array_key_exists('minus',$value2) &&
array_key_exists('plus',$value2))
{
}
}
}
}
$valuesComplete = array();
foreach ($result2 as $value) {
$result2 = $value['0'];
array_push($valuesIncomplete, $result2);
}
return $valuesComplete;
而是期望的结果的描述上面我得到这个:
Array ([0] => Array
([0] => 2007 [plus] => 2)
[1] => Array ([0] => 2008 [plusMinus => 0)
[2] => Array ([0] => 2009 [plusMinus] => 0)
[3] => Array ([0] => 2010 [plusMinus] => 0)
[4] => Array ([0] => 2011 [plusMinus] => 0)
[5] => Array ([0] => 2012 [plusMinus] => 0)
[6] => Array ([0] => 2013 [plusMinus] => 0)
)
我缺少什么?谢谢你的帮助!
我可能只是完全想念它,但是不要错过$ valuesComplete和$ valuesIncomplete? – Borniet 2013-04-10 12:20:14
首先,为了简洁起见,请使用其它elseifs并使用continue(在循环中)来查看你在做什么,请...我不明白为什么人们将事情复杂化以便陷入困境...... :) – Ihsan 2013-04-10 12:22:39