2010-12-07 9 views
2

hey, j'ai ce tableau (le tableau réel peut être plusieurs deeps de niveau et se rapporte à une structure arborescente)trouver une clé dans un tableau arborescente multidimensionnel

array 
    3 => 
    array 
     4 => 
     array 
      7 => null 
      8 => null 
     5 => null 
    6 => null 

Maintenant, par exemple Je veux que le chemin vers la clef 7, on peut montrer comme ceci:

array 
    0 => int 7 
    1 => int 4 
    2 => int 3 

quelqu'un peut me aider avec une telle fonction récursive?

Répondre

8

Cela vous rapportera ce que vous cherchez. Il retournera null si la clé n'est pas trouvée.

In codepad.

function getkeypath($arr, $lookup) 
{ 
    if (array_key_exists($lookup, $arr)) 
    { 
     return array($lookup); 
    } 
    else 
    { 
     foreach ($arr as $key => $subarr) 
     { 
      if (is_array($subarr)) 
      { 
       $ret = getkeypath($subarr, $lookup); 

       if ($ret) 
       { 
        $ret[] = $key; 
        return $ret; 
       } 
      } 
     } 
    } 

    return null; 
} 
+1

Condition de fin: si la clé existe, elle retourne un tableau avec cette clé; Sinon, il vérifie chaque valeur du tableau pour voir s'il s'agit d'un tableau. Si c'est le cas, il s'exécute lui-même sur le sous-tableau. Si le résultat est un tableau, il ajoute la clé en cours sur le tableau de retour et le renvoie. S'il ne trouve pas la recherche, elle renvoie null (ce qui échoue à la vérification de la valeur renvoyée). – evan

Questions connexes