Detect and mark all duplicates in the same loop

I had a loop where an array with possible duplicates of 'code'. Did not want to loop the array twice and didn't want to extend the array with yet another item for each row. So I made this script keep track of the first occurrence of each 'code' and any duplicate 'code', and if a duplicate is found the script marks the first occurrence as number 1 and then mark up any additional duplicate with 2, 3, 4and so on.

<?php
$data_array
= $duplicate_akods = $duplicate_akods_pos = array();
$akod_pos = 0;

$result = 1;
$str_array = array();
$str_array[] = array('code' => 'm1', 'result' => $result++);
$str_array[] = array('code' => 'a1', 'result' => $result++);
$str_array[] = array('code' => 'a2', 'result' => $result++);
$str_array[] = array('code' => 'a3', 'result' => $result++);
$str_array[] = array('code' => 'm1', 'result' => $result++);
$str_array[] = array('code' => 'a3', 'result' => $result++);
$str_array[] = array('code' => 'm1', 'result' => $result++);


echo
"<pre>";
print_r($str_array);
echo
"</pre>";


        foreach (
$str_array as $item) {

            if (isset(
$duplicate_akods[$item['code']])) {
               
$duplicate_akods[$item['code']]++;
               
$item['duplicate'] = $duplicate_akods[$item['code']];
               
$data_array[$duplicate_akods_pos[$item['code']]]['duplicate'] = 1;
            } else {
               
$duplicate_akods[$item['code']] = 1;
               
$duplicate_akods_pos[$item['code']] = $akod_pos;
            }

           
array_push($data_array, $item);
           
$akod_pos++;
        }
       
echo
"<pre>";
print_r($data_array);
echo
"</pre>";


exit;
?>
Here is the result of the print out
Array
(
    [0] => Array
        (
            [code] => m1
            [result] => 1
        )

    [1] => Array
        (
            [code] => a1
            [result] => 2
        )

    [2] => Array
        (
            [code] => a2
            [result] => 3
        )

    [3] => Array
        (
            [code] => a3
            [result] => 4
        )

    [4] => Array
        (
            [code] => m1
            [result] => 5
        )

    [5] => Array
        (
            [code] => a3
            [result] => 6
        )

    [6] => Array
        (
            [code] => m1
            [result] => 7
        )

)


Array
(
    [0] => Array
        (
            [code] => m1
            [result] => 1
            [duplicate] => 1
        )

    [1] => Array
        (
            [code] => a1
            [result] => 2
        )

    [2] => Array
        (
            [code] => a2
            [result] => 3
        )

    [3] => Array
        (
            [code] => a3
            [result] => 4
            [duplicate] => 1
        )

    [4] => Array
        (
            [code] => m1
            [result] => 5
            [duplicate] => 2
        )

    [5] => Array
        (
            [code] => a3
            [result] => 6
            [duplicate] => 2
        )

    [6] => Array
        (
            [code] => m1
            [result] => 7
            [duplicate] => 3
        )

)
Knowledge keywords: