Cómo buscar por clave => valor en una matriz multidimensional en PHP

¿Hay alguna forma rápida de obtener todos los subarrays donde se encontró un par de valores clave en una matriz multidimensional? No puedo decir qué tan profunda será la matriz.

Ejemplo simple de matriz:

$arr = array(0 => array(id=>1,name=>"cat 1"),
             1 => array(id=>2,name=>"cat 2"),
             2 => array(id=>3,name=>"cat 1")
);

Cuando busco clave = nombre y valor = "cat 1", la función debería devolver:

array(0 => array(id=>1,name=>"cat 1"),
      1 => array(id=>3,name=>"cat 1")
);

Supongo que la función tiene que ser recursiva para llegar al nivel más profundo.

Respuestas a la pregunta(14)

Su respuesta a la pregunta