dedlfix: Prüfen, ob Wert in einem mehrdimensionalen Array vorhanden ist

Beitrag lesen

Tach!

Suche in diesem Datensatz-Array, was du suchen willst und brich beim Finden die Schleife mit break ab. $key und $value bleiben auch nach der Schleife erhalten und enthalten die Daten der Fundstelle.
OK, ich sehe ein, dass ich mir dadurch die doppelte Angabe der Nummer ersparen kann und mache es jetzt genau so, wie von Dir vorgeschlagen.

Einen kleinen Hinweis hab ich noch:

foreach ( $user as $key => $value )

{
      if ( ( $given_name == $value['username'] ) AND ( $given_pin == $value['pin'] ) )
         {
            $number = $key;
         }
   }

  
Die Namen $key und $value hab ich nur für das allgemeine Schau-dir-die-Struktur-an-Beispiel verwendet. Du solltest auch bei Variablen versuchen, die Dinge bei ihrem richtigen Namen zu nennen, damit deine Absicht deutlicher wird (für andere und dein anderes Ich, das vier Wochen später auf den Code schaut und ihn zu verstehen versucht), was du in dieser Variable abzulegen gedenkst.  
  
In $user befindet sich nicht nur ein User sondern mehrere, also wäre $users angebracht. Wenn du dann durch diese Menge durchläufst, um einzelne User zu behandeln, hast du dann den Namen $user in der Einzahl dafür frei. Der Key in deinem User-Array ist nicht einfach nur ein bedeutungsloser $key sondern er ist eine Nummer (wofür auch immer sie konkret steht, das kann man sicher auch noch präzisieren).  
  
Das foreach kannst du also aussagekräftiger umschreiben zu  
  
  foreach ($users as $number => $user)  
  
Dann sollte dir auffallen, dass du $number nicht unbedingt extra speichern musst, sondern dass sie schon in einer Variablen steht. Es reicht dann statt der Zuweisung ein einfacher Abbruch (vermeidet auch das weitere unnötige Durchlaufen bis zu <del>bitteren</del> Ende), woraufhin du neben der Nummer gleich noch den User zugriffsfertig in einer zweiten Variablen stehen hast. - Allerdings hat die Geschichte auch noch einen Haken, den ich bei meiner vorherigen Antwort noch übersehen hatte. Was ist, wenn kein User gefunden wird? In der jetzigen Ausführung zeigt dann $number und $user auf den letzten Eintrag und man weiß nicht, ob das eine Fundstelle war oder keine. Noch einmal vergleichen wäre nicht so schön. Eine Möglichkeit ist, nach dem if, $number und $user auf null zu setzen: $number = $user = null; Wenn ein Abbruch wegen Findens stattfindet, wird die Zuweisung nicht ausgeführt, ansonsten doch, und beim letzten Datensatz endet danach die Schleife.  
  
Die Zuweisung jedes Mal ist aus meiner Sicht das kleinere Übel. Eine Alternative wäre der Code wie du ihn jetzt hast, dann bekommst du aber ein Benennungsproblem(chen). Entweder bleibst du beim allgemeinen nichtvielsagenden $key-$value-Pärchen oder nimmst $number\_in\_der\_schleife oder ein ähnliches nicht besonders tolles Hilfskonstrukt. Jedenfalls müsste noch (auch wenn du an deiner jetzigen Lösung eigentlich nichts mehr ändern möchtest) $number vor dem foreach um eine Initialisierung ergänzt werden, sonst ist diese Variable nach einem Nicht-Finden nicht existent, was beim nächsten Lesezugriff mindestens eine Notice-Meldung verursacht, wenn das error\_reporting auf E\_ALL steht.  
  
  
dedlfix.
0 45

Prüfen, ob Wert in einem mehrdimensionalen Array vorhanden ist

Wolowitz
  • php
  1. 0
    T-Rex
    1. 0
      Wolowitz
      1. 0
        Der Martin
        1. 0
          Wolowitz
          1. 0
            Der Martin
            1. 0
              Wolowitz
              1. 3
                dedlfix
                1. 0
                  Wolowitz
                  1. 0
                    dedlfix
                    1. 0
                      Wolowitz
          2. 0
            T-Rex
            1. 0
              Wolowitz
  2. 0
    dedlfix
    1. 0
      Wolowitz
      1. 1
        Der Martin
      2. 0
        dedlfix
        1. 0
          Wolowitz
          1. 0
            Der Martin
        2. 0
          seth_not@home
          1. 0
            Der Martin
          2. 0
            dedlfix
            1. 0

              bezeichnung "mehrdimensionales array"

              seth
              • meinung
              1. 0
                dedlfix
                1. 0
                  seth
                2. 0
                  seth
                  1. 0
                    dedlfix
                  2. 0
                    Blaubart
                    1. 0
                      dedlfix
                      • php
                    2. 0
                      seth
          3. 0
            Fred Furunkelstein 2013
            1. 0

              oberlehrerhaft

              seth
              • menschelei
              1. 0
                Jörg Reinholz
  3. 0

    Meine Lösung

    Wolowitz
    1. 0
      Matthias Apsel
    2. 0
      Jörg Reinholz
      1. 0

        Meine Lösung: Suchen und Ersetzen von Werten in Arrays(Hash

        Jörg Reinholz
      2. 0
        dedlfix
    3. 0
      bubble
    4. 0
      hotti
      1. 0
        Wolowitz
        1. 0
          Der Martin
          1. 0
            Fred Furunkelstein 2013
        2. 0
          dedlfix
        3. 0
          hotti