¿Cómo puedo contar y reducir la ocurrencia de un valor en una matriz?

Tengo una matriz que se ve así:

Array ( [0] => Array ( [name] => test [...] => ... ) [1] => Array ( [name] => wine [...] => ... ) [2] => Array ( [name] => wine [...] => ... ) ) 

Ahora, lo que quiero lograr es algo como esto:

 Array ( [0] => Array ( [name] => test [occurrence] => 1 [...] => ... ) [1] => Array ( [name] => wine [occurence] => 2 [...] => ... ) ) 

En resumen, quiero deduplicar los elementos en función de la clave de name única, y quiero agregar una occurrence contador al resultado que me dice con qué frecuencia ocurrió cada elemento. Los elementos tienen muchas más claves, que deben conservarse (mantener los valores de la primera aparición es correcto).

 $result = []; foreach ($array as $item) { if (!isset($result[$item['name']])) { $result[$item['name']] = $item; $result[$item['name']]['occurrence'] = 1; } else { $result[$item['name']]['occurrence']++; } } 

Simplemente use el hecho de que las teclas de matriz son únicas, y tendrá sus datos deduplicados en una iteración de bucle único.