Mailinglisten-Archive |
On Wed, Aug 21, 2002 at 01:15:48PM +0200, Patrick Schuster wrote: tach, <snip> > $menu = array( > 4 => array( > "url" => "inside/", > "title" => "Inside PEAR", > "sub" => array( > 41 => array( > "url" => "inside/cvs/", > "title" => "CVS" > ), > 42 => array( > "url" => > "inside/guide/", > "title" => "Coding > Guidelines", > "sub" => > array( > 421 => > array( > > "url" => "inside/cvs/", > > "title" => "Test1" > > ) > > ) > ) > ) > ), > 5 => array( > "url" => "packages/", > "title" => "Packages" > ) > ); > > Nun würde ich gerne den Teil unterhalb vom "Key" 42 haben z.B. mit Hilfe > wie den Befehl: > $subArray = getSub("42"); function getSub ( $parent, $key ) { if (!(is_array($parent)) return; reset ( $parent ); while (list($walk,$current93)=each($parent)) { if ($walk==$key) return $current93; if ($res = getSub($current93, $key)) return $res; } } du kannst aber deine keys auch gleich hierarisch aufbauen. $myarray = array ( 1 => array ( text => "das ding hat key 1", url => "blubb:nonsense" sub => array ( 1 => array ( text => "hier iss key 11" url => "http://www.metux.de/" sub => array ( 3 => array ( url => "http://www.de.php.net/", text => "hier iss der key 113" ) ) ), 7 => array ( ... ), 2 => array ( ... ) ) ... damit kannst du dann den baum zielgerichtet durchgehen. hast damit deutlich geringere zeitkomplexitaet (etwa logarithmisch statt linear) wenn du mehr als 10 verschiedene keys pro teilbaum brauchs, kannst du entweder noch buchstaben zur hilfe nehmen oder die einzelnen key-ebenen durch trenner abgrenzen (zb.':') und den key beim suchen mittels split() zerlegen. <snip> > 2.) Gibt es eine Möglichkeit herauszufinden zu welchem "Top Element" > mein gesuchtes "Sub-Element" gehört? Also ich suche z.B. alles ab Key > "421" dann wäre der Key des Top-Elements "4". sofern dein key hierarisch aufgebaut ist (wie oben), brauchst du diesen ja bloss zerlegen. ~-n -- Enrico Weigelt == metux ITS Webhosting ab 5 EUR/Monat. UUCP, rawIP und vieles mehr. phone: +49 36207 519931 www: http://www.metux.de/ fax: +49 36207 519932 email: contact_(at)_metux.de cellphone: +49 174 7066481 smsgate: sms.weigelt_(at)_metux.de
php::bar PHP Wiki - Listenarchive