Récursive array_search

J'ai un tableau multidimensionnel:

$categories = array(
    array(
        'CategoryID' => 14308,
        'CategoryLevel' => 1,
        'CategoryName' => 'Alcohol & Food',
        'CategoryParentID' => 14308
    ),
    //CHILD CATEGORIES
    array(
        array(
            'CategoryID' => 179836,
            'CategoryLevel' => 2,
            'CategoryName' => 'Alcohol & Alcohol Mixes',
            'CategoryParentID' => 14308
        ),
        array(
            array(
                'CategoryID' => 172528,
                'CategoryLevel' => 2,
                'CategoryName' => 'Antipasto, Savoury',
                'CategoryParentID' => 14308
            )
        )
    )
);

J'ai besoin d'obtenir la localisation exacte de l'indice, et depuis array_search ne fonctionne pas sur les multiples dimensions des tableaux, je suis en utilisant l'une des fonctions fournies par le manuel PHP de la page.

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

.. mais il renvoie également la clé de la première pile uniquement:

echo recursive_array_search(172528, $categories); //outputs 1

J'en attends:

[1][1][0]

OriginalL'auteur 3zzy | 2015-02-12