I have two arrays, $array1 and $array2. $array2 is an array of arrays. For each subarray of $array2, I want to print $array1 but with additional entries that depend on whether the $array2 subarray has keys "a" or "c" with value 1. My code prints $array1 each loop, but there are additional entries in $array1 for the later iterations that I wasn't expecting. Why do I get these entries, and how do I prevent them?
Sample code:
$array1 = array(
    "service" => "coding",
    "data" => array(
        "ITEM" => array(
            array(
                "CODE" => "9999", //STANDARD
                "QUANTITY" => 1
            ),
        )
    )
);
$array2 = array(
    array(
        "a" => "1",
        "b" => "1",
        "c" => "1",
        "d" => "1",
    ),
    array(
        "cancel" => "1",
        "a" => "1",
        "b" => "",
        "c" => "",
        "d" => "1",
    ),
    array(
        "cancel" => "1",
        "a" => "",
        "b" => "1",
        "c" => "1",
        "d" => "",
    ),
);
for ($i = 0; $i < count($array2); $i++) {
    foreach ($array2[$i] as $key => $value) {
        if($key == 'a' && $value == 1){
            array_push($array1['data']['ITEM'],
                array('SOMETHING' =>  'this_is_a',
                    'ELSE' => "1"
                )
            );
        }
        if($key == 'c' && $value == 1){
            array_push($array1['data']['ITEM'],
                array('SOMETHING' =>  'this_is_c',
                    'ELSE' => "1"
                )
            );
        }
    }
    echo "Loop #$i result:\n";    
    var_export($array1);
    echo "\n";
}
You can test the above code as a PHP Sandbox snippet.
The actual result is:
Loop #0 result:
array (
  'service' => 'coding',
  'data' => 
  array (
    'ITEM' => 
    array (
      0 => 
      array (
        'CODE' => '9999',
        'QUANTITY' => 1,
      ),
      1 => 
      array (
        'SOMETHING' => 'this_is_a',
        'ELSE' => '1',
      ),
      2 => 
      array (
        'SOMETHING' => 'this_is_c',
        'ELSE' => '1',
      ),
    ),
  ),
)
Loop #1 result:
array (
  'service' => 'coding',
  'data' => 
  array (
    'ITEM' => 
    array (
      0 => 
      array (
        'CODE' => '9999',
        'QUANTITY' => 1,
      ),
      1 => 
      array (
        'SOMETHING' => 'this_is_a',
        'ELSE' => '1',
      ),
      2 => 
      array (
        'SOMETHING' => 'this_is_c',
        'ELSE' => '1',
      ),
      3 => 
      array (
        'SOMETHING' => 'this_is_a',
        'ELSE' => '1',
      ),
    ),
  ),
)
Loop #2 result:
array (
  'service' => 'coding',
  'data' => 
  array (
    'ITEM' => 
    array (
      0 => 
      array (
        'CODE' => '9999',
        'QUANTITY' => 1,
      ),
      1 => 
      array (
        'SOMETHING' => 'this_is_a',
        'ELSE' => '1',
      ),
      2 => 
      array (
        'SOMETHING' => 'this_is_c',
        'ELSE' => '1',
      ),
      3 => 
      array (
        'SOMETHING' => 'this_is_a',
        'ELSE' => '1',
      ),
      4 => 
      array (
        'SOMETHING' => 'this_is_c',
        'ELSE' => '1',
      ),
    ),
  ),
)
The loop #0 result is correct, but the later loops have additional entries in $array1['data']['ITEM']. Desired result:
Loop #0 result:
array (
  'service' => coding
  'data' => array (
    'ITEM' => array (
      0 => array (
        'CODE' => 9999
        'QUANTITY' => 1
      )
      1 => array (
        'SOMETHING' => 'this_is_a'
        'ELSE' => 1
      )
      2 => array (
        'SOMETHING' => 'this_is_c'
        'ELSE' => 1
      )
    )
  )
)
Loop #1 result:
array (
  'service' => coding
  'data' => array (
    'ITEM' => array (
      0 => array (
        'CODE' => 9999
        'QUANTITY' => 1
      )
      1 => array (
        'SOMETHING' => 'this_is_a'
        'ELSE' => 1
      )
    )
  )
)
Loop #2 result:
array (
  'service' => coding
  'data' => array (
    'ITEM' => array (
      0 => array (
        'CODE' => 9999
        'QUANTITY' => 1
      )
      1 => array (
        'SOMETHING' => 'this_is_c'
        'ELSE' => 1
      )
    )
  )
)
 
     
     
    