phpbar.de logo

Mailinglisten-Archive

[php] Teil eines assoziatives Array auslesen

[php] Teil eines assoziatives Array auslesen

Enrico Weigelt php_(at)_phpcenter.de
Wed, 21 Aug 2002 17:23:39 +0200


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