Допустим, у нас есть массив:

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

Нужно найти все элементы, ключи которых равняются "cat 1":

// Функция
function search($array, $key, $value)
{
    $results = array();

    if (is_array($array))
    {
        if (isset($array[$key]) && $array[$key] == $value)
            $results[] = $array;

        foreach ($array as $subarray)
            $results = array_merge($results, search($subarray, $key, $value));
    }

    return $results;
}

// Используем
print_r(search($arr, 'name', 'cat 1'));

Результат

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)

Source