foreachループ内で一致する多次元配列を構築しようとしています。 1つのループの後、配列は正しいが、2番目のループでは、以前の配列の値が上書きされます。何が起こっている?foreachループ内のArray_pushは以前のarrey値よりも優先されます
$matches = array();
foreach ($promotions as $promotion) {
$matches = array();
foreach ($saleitems as $saleitem) {
if ($saleitem['PROMO_CODE'] == $promotion['SALES_CODE']) {
$matches[] = array('ID'=>$saleitem['ID'], "LINENO"=>$saleitem['LINE'], "SAVING"=>"0", 'SALEINC'=>$saleitem['SALEINC']);
}
}
//other code with works out discount etc.
$linesarray[] = array("CODE"=>$promotion['CODE'], "LINES"=>$matches);
print_r($linesarray);
echo "<p>";
}
出力この:
Array ([0] => Array ([CODE] => 5 [LINES] => Array ([0] => Array ([ID] => 51016 [LINENO] => 4 [SAVING] => 5 [SALEINC] => 15.00) [1] => Array ([ID] => 51013 [LINENO] => 3 [SAVING] => 5 [SALEINC] => 15.00))))
Array ([0] => Array ([CODE] => 5 [LINES] => Array ([0] => Array ([ID] => 51016 [LINENO] => 4 [SAVING] => 5 [SALEINC] => 15.00) [1] => Array ([ID] => 43930 [LINENO] => 2 [SAVING] => 0 [SALEINC] => 16.00))) [1] => Array ([CODE] => 7 [LINES] => Array ([0] => Array ([ID] => 43914 [LINENO] => 1 [SAVING] => 6 [SALEINC] => 16.00) [1] => Array ([ID] => 43930 [LINENO] => 2 [SAVING] => 6 [SALEINC] => 16.00))))
あなたはLINENO 3は、第二のループの最初の配列を交換されている見ることができるように。どうして?
外部ループを開始するたびに、$一致を空の配列にリセットします。それを取り出してみてください。 –