Path: csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Ralph Stahl Newsgroups: de.comp.lang.php Subject: Re: PHP Array zusammensetzen anhand von Strings (keys) Date: Tue, 10 Apr 2018 14:21:21 +0200 Lines: 66 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net RnDqysI2ZlG5SM/qNGID/AKb3JVXkuGN+ai56mp+89VTwRUgKi Cancel-Lock: sha1:QlSWNcDh65ycCkAT0wwvvImhgI0= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 In-Reply-To: Content-Language: de-DE Xref: csiph.com de.comp.lang.php:4352 Jan Novak schrieb: > Am 10.04.18 um 12:45 schrieb Klaus Ketelaer: >> >> Ich vermute mal, er sucht etwas in der Art von >> >> function meineFunktion($meinKey) { $meineKeys = >> explode('.',$meinKey); >> >> return $Test[$meineKeys[0]],[$meineKeys[1]][$meineKeys[2]]; } > > > Ja so in etwa. Sorry, aus eigener Sicht ist immer alles "ganz klar" > :-) > > Dein Code ist statisch. Ich kenne aber die Anzahl der Keys nicht. In > dem obigen Beispiel sind es 3, es könnten aber auch mehr oder > weniger sein. Deshalb meine Frage nach dem "zusammensetzen" anhand > der Keys als String. > > Hier ein Beispiel eines arrays: > > $test = [ > 'MASK' => [ > 'login' => [ > 'welcome' => 'hallo', > 'name' => 'ein name', > ], > 'test' => [ > 'bla' => [ > 'blub' => "was auch immer", > ], > ], > ]; > ein Aufruf wäre also zum Beispiel > > meineFunktion("MASK.login.welcome") > > ein anderer eben > > meineFunktion("MASK.test.bla.blub") > > Letztendlich ist meine Frage: Wie bekomme ich aus z.B. dem String > "MASK.test.bla.blub" den Wert "was auch immer" zurück über die ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Was ja nun wieder kein Key, sondern ein Value (Wert) in deinem Beispiel ist. Einige dich bitte mal auf die Begriffe ;-). Jetzt ist die Fragestellung zwar klarer, aber andersrum als zu Anfang. Ich werde das Gefühl nicht los, dass dein Lösungsansatz schon in puncto Datenstruktur irgendwie unpraktikabel ist, um es mal vorsichtig auszudrücken. Dreh doch mal spaßeshalber deine Idee rum und drücke deine beiden Beispiele oben (beide Komponenten von $test = ...) in gleichartigen Aufrufen von meineFunktion() aus. Du wirst ein Problem finden, stimmts? Die Teilarrays MASK[] und test[] haben unterschiedliche Struktur und könnten noch viel komplizierter sein - sowas lässt sich vielleicht gar nicht über einen einfachen String "MASK.test.bla.blub" abbilden. Wozu auch? Warum übergibst du nicht einfach gleich den gesuchten Array-Key und gibst, sofern vorhanden, den Wert zurück? Dann könntest du auch gleich die ganze Funktion weglassen :-) und direkt auf den Wert zugreifen, sofern er existiert... Ralph