PHP: cuente valores duplicados dentro de una matriz bidimensional, luego muestre solo valores únicos con el recuento

He estado trabajando en esto durante un par de días ... y todavía no he podido lograr los resultados deseados. Cualquier ayuda en esto sería muy apreciada ... gracias de antemano.

Tengo una matriz múltiple almacenada en $ log, que se muestra así cuando imprime_r ($ log):

   Array ( [0] => Array ( [0] => Red [1] => Steel ) 
           [1] => Array ( [0] => Red [1] => Wood ) 
           [2] => Array ( [0] => Blue [1] => Wood ) 
         )

Actualmente tengo esto:

$counts = $log;
foreach ($log as $value) {
    foreach ($value as $k  => $v) {
        if (!isset($counts[$k])) $counts[$k] = array();
        if (!isset($counts[$k][$v])) $counts[$k][$v] = 0;
        $counts[$k][$v] += 1;
    }
}

foreach ($counts as $k => $v1) {
    foreach ($v1 as $v => $count) {
        echo "$v => $count <br />";
    }
}

Que muestra:

0 => Red 
1 => Steel 
Red => 2 
Blue => 1 
0 => Red 
1 => Wood 
Steel => 1 
Wood => 2 
0 => Blue 
1 => Wood  

Pero realmente estoy buscando tener un resultado final de:

<h2>Colors</h2>
Red => 2
Blue => 1

<h2>Materials</h2>
Steel => 1
Wood => 2

Respuestas a la pregunta(2)

Su respuesta a la pregunta