christian.schneider
Goto Top

Array durchsuchen

Hallo

Gibt es von PHP bereits eine solche Funktion:
"Durchsucht ein Array rekursiv nach einem Wert eines bestimmten Schlüssels und liefert wenn gefunden 'true' zurück."

Konkret: Die Funktion soll im Array nach dem Schlüssel "id" suchen und diesen Schlüssel mit einer Zahl vergleichen.

Mein Vorhaben:

Ich hab ein Array

Array
(
     => Array
        (
            [id] => 1
            [titel] => Home
            [parent_id] => 0
            [ebene] => 1
            [children] => Array
                (
                     => Array
                        (
                            [id] => 5
                            [titel] => Home
                            [parent_id] => 1
                            [ebene] => 2
                            [children] => Array
                                (
                                     => Array
                                        (
                                            [id] => 14
                                            [titel] => test1
                                            [parent_id] => 5
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [id] => 15
                                            [titel] => test2
                                            [parent_id] => 5
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 6
                            [titel] => Fachgeschaeft
                            [parent_id] => 1
                            [ebene] => 2
                            [children] => Array
                                (
                                     => Array
                                        (
                                            [id] => 10
                                            [titel] => Ueber uns
                                            [parent_id] => 6
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [id] => 11
                                            [titel] => Wochenhit
                                            [parent_id] => 6
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                     => Array
                                                        (
                                                            [id] => 18
                                                            [titel] => Test1
                                                            [parent_id] => 11
                                                            [ebene] => 4
                                                            [children] => Array
                                                                (
                                                                )

                                                        )

                                                    [1] => Array
                                                        (
                                                            [id] => 19
                                                            [titel] => Test2
                                                            [parent_id] => 11
                                                            [ebene] => 4
                                                            [children] => Array
                                                                (
                                                                )

                                                        )

                                                    [2] => Array
                                                        (
                                                            [id] => 20
                                                            [titel] => test
                                                            [parent_id] => 11
                                                            [ebene] => 4
                                                            [children] => Array
                                                                (
                                                                     => Array
                                                                        (
                                                                            [id] => 21
                                                                            [titel] => test
                                                                            [parent_id] => 20
                                                                            [ebene] => 5
                                                                            [children] => Array
                                                                                (
                                                                                )

                                                                        )

                                                                )

                                                        )

                                                )

                                        )

                                    [2] => Array
                                        (
                                            [id] => 12
                                            [titel] => Produkte
                                            [parent_id] => 6
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [3] => Array
                                        (
                                            [id] => 13
                                            [titel] => Partner
                                            [parent_id] => 6
                                            [ebene] => 3
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [2] => Array
                        (
                            [id] => 7
                            [titel] => Software Entwicklung
                            [parent_id] => 1
                            [ebene] => 2
                            [children] => Array
                                (
                                )

                        )

                    [3] => Array
                        (
                            [id] => 8
                            [titel] => Links
                            [parent_id] => 1
                            [ebene] => 2
                            [children] => Array
                                (
                                )

                        )

                    [4] => Array
                        (
                            [id] => 9
                            [titel] => Mitarbeiter
                            [parent_id] => 1
                            [ebene] => 2
                            [children] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [titel] => Support
            [parent_id] => 0
            [ebene] => 1
            [children] => Array
                (
                     => Array
                        (
                            [id] => 16
                            [titel] => Support
                            [parent_id] => 2
                            [ebene] => 2
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [id] => 17
                            [titel] => Test
                            [parent_id] => 2
                            [ebene] => 2
                            [children] => Array
                                (
                                )

                        )

                )

        )

    [2] => Array
        (
            [id] => 3
            [titel] => Kontakt
            [parent_id] => 0
            [ebene] => 1
            [children] => Array
                (
                )

        )

)

Nun erhalte ich von aus dem GET Parameter die ID des aktuell ausgewählten Punktes.
Nun soll der Pfad zum ausgewählten Unterpunkt Fett dargestellt werden.
Meine Überlegung nun: Jedesmal wenn in der Schleife bei der Suche nach "id" true zurück kommt setze ich das Attribut "b".

Content-Key: 103676

Url: https://administrator.de/contentid/103676

Printed on: April 20, 2024 at 04:04 o'clock

Member: ITLocke
ITLocke Dec 09, 2008 at 15:11:13 (UTC)
Goto Top
"array_key_exists — Prüft, ob ein Schlüssel in einem Array existiert"

Näheres siehe:

http://de.php.net/manual/de/function.array-key-exists.php

Ob es das auch rekursiv macht, weiß ich leider nicht.

Gruß Locke
Member: Arano
Arano Dec 09, 2008 at 15:14:14 (UTC)
Goto Top
Nein, sieht nicht so aus !
PHP-Manual - Array Functions
Aber schau dir doch mal "array_walk_recursive()"" an, daraus sollte sich doch was basteln lassen.

~Arano
Member: christian.schneider
christian.schneider Dec 25, 2008 at 00:01:59 (UTC)
Goto Top
ich habs geschafft mit

array_walk_recursive($child, 'search_array_output');

besten dank!