我試圖讓下面的代碼工作好幾個小時,但只是不成功。數組的組合
我有這個日期數組:
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