Busque una matriz multidimensional para ciertos valores

Tengo una matriz multidimensional en el siguiente formato:

[0] = (
    'id' => '1',
    'type' => 'fish', 
    'owner' => 'bob',
)

[1] = (
    'id' => '2',
    'type' => 'cat', 
    'owner' => 'mary',
)

[2] = (
    'id' => '3',
    'type' => 'dog', 
    'owner' => 'larry',
)

[3] = (
    'id' => '2',
    'type' => 'cat', 
    'owner' => 'fred',
)

Me gustaría buscar un valor, y devuelven una matriz que contiene todas las claves de las matrices coincidentes y se ve así en una búsqueda de type = cat:

[0] = (
    'id' => '2',
    'type' => 'cat', 
    'owner' => 'mary',
)

[1] = (
    'id' => '2',
    'type' => 'cat', 
    'owner' => 'fred',
)

Sé que estoy tratando de tratar la matriz como una base de datos, pero en este caso son datos dinámicos que no necesitan almacenarse una vez que finaliza el programa.

¿Algún consejo

Respuestas a la pregunta(3)

Su respuesta a la pregunta