Arraywert finden ohne den genauen Index zu kennen (mehrdimensionaler Array)

  • Guten Abend,


    ich komme gerade nicht weiter und leider konnte mir Internetrecherche auch nicht helfen, deshalb hab ich mir gedacht, ich frag einfach mal hier. Fragen kostet ja nichts. ;)


    Ich möchte in einer if-Anweisung folgende Bedingung stehen haben:

    PHP
    1. if($aktuelleurl==$navigation[$i][$j][0]||$aktuelleurl==$navigation[$i][$j][1]||$aktuelleurl==$navigation[$i][$j][2])


    Da ich den Array ja selbst erzeugt habe, kenne ich die einzelnen Werte/Indizes und habe die Bedingung dann "manuell" niedergeschrieben.
    Allerdings ist das etwas umständlich und bestimmt nicht die Muster-Programmierer-Lösung.
    Das kann man doch bestimmt kürzer schreiben? (Dazu muss ich sagen, dass ich noch eine zweite if-Anweisung habe, die genauso aufgebaut ist und durch die manuelle Schreibweise wesentlich länger ist)


    Mir schwebt so etwas vor:

    PHP
    1. if($aktuelleurl==$navigation[$i][$j][X])


    Dabei ist X beliebig, das Programm soll also überprüfen, ob irgendein Wert davon = der Variable $aktuelleurl ist.


    Ich hoffe ich hab das verständlich erklärt.


    Gibt es irgendwas, das dem entspricht? Oder etwas ähnlich simples?


    Ich könnte die einzelnen Array-Werte auch über eine Schleife ausgeben, allerdings geht das nicht in der Bedingungs-Klammer einer if-Anweisung - oder?

  • Sowas?

    PHP
    1. if (in_array($aktuelleUrl, $navigation[$i][$j]))
    2. echo "Vorhanden";
    3. else
    4. echo "Nicht vorhanden";
  • Super, vielen vielen Dank! Genau sowas habe ich gesucht!


    Kann ich in_array auch benutzen um Werte in weiteren Ebenen darunter zu finden?
    Mein Array ist mehrdimensional (die Dimensionen sind aber nicht gleichmäßig) und ich möchte nun auch die Werte $navigation[$i][X][X] durchsuchen.
    Geht das irgendwie?



    Hier mal noch mein Array, vielleicht hilft das. Man sieht also, dass nicht alle Zweige bis in die 3. Dimension gehen.

  • Wenn die Dimensionen in deinem Array unterschiedlich sind und du die genaue Tiefe nicht kennst, wirst du dir wohl eine Funktion schreiben müssen, die alle Einträge durchforstet.


    Guck mal unter http://de3.php.net/manual/de/function.in-array.php in den "User Contributed Notes", dort sind immer brauchbare Funktionen zu finden.