2010-12-07 10 views
2

Hey, ich habe dieses Array (die tatsächliche Array mehrere Ebene deeps sein kann, und erstreckt sich über eine Baumstruktur)finden Pfad eines Schlüssels in einem mehrdimensionalen Array baumartigen

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

nun z.B. Ich möchte den Weg zu Schlüssel 7 kann wie folgt dargestellt werden:

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

helfen Kann mir jemand mit einem solchen Rekursion Funktion?

Antwort

8

Dies wird Ihnen zurückgeben, was Sie suchen. Es gibt null zurück, wenn der Schlüssel nicht gefunden wird.

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

End Bedingung: Wenn der Schlüssel existiert, gibt sie einen Array mit diesem Schlüssel; Andernfalls überprüft es jeden Wert im Array, um zu sehen, ob es ein Array ist. Wenn ja, läuft es auf dem Subarray. Wenn das Ergebnis ein Array ist, hängt es den aktuellen Schlüssel an das Rückgabearray an und gibt es zurück. Wenn die Suche nicht gefunden werden kann, wird null zurückgegeben (was die Überprüfung des Rückgabewerts nicht besteht). – evan

Verwandte Themen