Buscar matriz y devolver todas las claves y valores cuando se encuentra la coincidencia

Me gusta realizar una búsqueda en una matriz y devolver todos los valores cuando se encuentra una coincidencia. La clave[name] en la matriz es en lo que estoy haciendo una búsqueda.

Array (
[0] => Array
    (
        [id] => 20120100
        [link] => www.janedoe.com
        [name] => Jane Doe
    )
[1] => Array
    (
        [id] => 20120101
        [link] => www.johndoe.com
        [name] => John Doe
    )
)

Si hice una búsqueda de John Doe volvería.

Array
(
    [id] => 20120101
    [link] => www.johndoe.com
    [name] => John Doe
)

¿Sería más fácil cambiar el nombre de las matrices en función de lo que estoy buscando? En lugar de la matriz anterior, también puedo generar lo siguiente.

Array (
[Jane Doe] => Array
    (
        [id] => 20120100
        [link] => www.janedoe.com
        [name] => Jane Doe
    )
[John Doe] => Array
    (
        [id] => 20120101
        [link] => www.johndoe.com
        [name] => John Doe
    )
)