php insertar valor en la matriz de matrices utilizando foreach

Tengo una pregunta bastante básica pero estoy atascado. Soy bastante nuevo en PHP y tengo una matriz como esta:

$array = array(
    'one' => 1,
    'two' => array('key1' => 'val1','key2' => 'val2'),
    'three' => array('key1' => 'val1','key2' => 'val2'),
    'four' => array('key1' => 'val1','key2' => 'val2')
);

y para cada una de las matrices en la matriz (es decir, 'dos,' tres 'y' cuatro '), quiero insertar' key3 '=>' val3 'en esas matrices.

Intenté esto:

foreach($array as $item) {
    if (gettype($item) == "array") {
        $item['key3'] = 'val3';
    }
}

Pero no funciona, y no estoy seguro de por qué. Al usar varios print_r por todo el lugar, parece que se inserta 'key3' => 'val3' en $ item si lo imprimo en el bucle, pero la matriz original no se modifica. También probé un bucle regular para eso, pero tampoco funcionó.

Respuestas a la pregunta(3)

Su respuesta a la pregunta