Ankündigung

Einklappen
Keine Ankündigung bisher.

verschachtelte foreach-Schlaufe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • verschachtelte foreach-Schlaufe

    Hallo zusammen
    Ich versuche von zwei Arrays eine gemeinsame Ausgabe zu erhalten, resp die Daten vom zweiten Array in den ersten zu integrieren.
    PHP-Code:
    foreach ($rows as $key) {
                          foreach (
    $rows2 as $key2) { 
                                                if (
    $key[0] == $key2[0]) {
                                                   
    $key[5]=$key2[5];
                                                                                                
                            echo 
    $key[2].' '.$key[5] .'<p>';  
                                                   }                                          
                          }


    Nun gibt er mir aber nur die rows aus, die identische IDs haben. Ich möchte alle rows ausgeben und nur bei den identischen die keys2 in den key übernehmen.
    Kann mir jemand helfen? Vielen Dank!


  • #2
    Vorsicht, wenn Du nur einen Parameter nach "as" angibst, wird diesem der Wert und nicht der Index eines Arrays zugewiesen. Nutz lieber array_keys.

    Gruß
    Muchacho

    Kommentar


    • #3
      Nun gibt er mir aber nur die rows aus, die identische IDs haben. Ich möchte alle rows ausgeben [...]
      Wozu dann die if-Abfrage?

      [...] und nur bei den identischen die keys2 in den key übernehmen.
      Funktioniert das? Oder wo ist das Problem? Es wird leider nicht klar, was deine Daten darstellen sollen (vielleicht ist das auch nicht wichtig) und wie du gerade auf die Indizes 0, 2 und 5 kommst und ob das ein Problem ist oder nicht!
      http://hallophp.de

      Kommentar


      • #4
        Vielen Dank! Aus array_key werde ich nicht schlau. Wie müsste ich es denn darstellen?

        zu Asipak: Wenn die ID identisch ist, dann soll key[5] aus key2[2] übernommen werden. (Also aus dem anderen Array).
        Das funktioniert an sich sehr gut. Aber wegen IF key[0]== if key2[0] werden die rows, die nicht identische Ids haben nicht angezeigt. Ich möchte aber trotzdem alle Datensätze angezeigt haben.
        Wie kann ich das umcoden?

        Kommentar


        • #5
          Code:
          if (...) {
          ...
          }
          
          echo ...
          http://hallophp.de

          Kommentar


          • #6
            Ja, aber das mache ich ja jetzt.
            Ich versuche es noch etwas genauer zu erklären: Ich habe zwei Arrays (aus csv-Daten). Nun möchte ich gewisse Felder des zweiten Arrays in der Tabelle ausgeben, die den ersten Array anzeigt.
            Wie gesagt funktioniert das so wunderbar, ausser dass die rows, die bei der IF-Schleife aussortiert werden, nicht angezeigt werden, was ja noch logisch ist.
            Aber wie kann ich diese auch anzeigen lassen?
            also irgendwie wenn
            PHP-Code:
            if $key[0]==$key2[0] { dann setze die Variable von key2[5als Variable in den key[2]. 
            Zeige aber alle rows an (auch diejenigen bei der die Variable $key[2nicht verändert wurde
            Ist es so verständlich?
            Wie ist das zu lösen?

            Kommentar


            • #7
              Was du hier machst:
              Code:
              if ($key[0] == $key2[0]) {
                  $key[5]=$key2[5];
                                                                                                          
                  echo $key[2].' '.$key[5] .'<p>';  
              }
              ist eher sowas:

              Code:
              if (...) {
              ...
              
                  echo ...
              }
              und nicht das:
              Code:
              if (...) {
              ...
              }
              
              echo ...
              .
              http://hallophp.de

              Kommentar


              • #8
                das Problem ist aber, dass es in der foreach-Schleife drin sein muss.
                Wenn ich es ändere:
                PHP-Code:
                foreach ($rows as $key) { 
                                      foreach (
                $rows2 as $key2) {  
                                                            if (
                $key[0] == $key2[0]) { 
                                                               
                $key[5]=$key2[5]; 
                                                                    }                                          
                                        echo 
                $key[2].' '.$key[5] .'<p>';   
                                                                                                         
                                      } 


                dann gibt er infolge foreach-Schleife mehrmals die gleiche Antwort (und zusätlich ändert $key[5] erst beim eigenen row).
                wie kann ich das if in der foreach-Schleife drin richtig platzieren?

                Kommentar


                • #9
                  Ist denn in $key[0] und $key2[0] der richtige Inhalt den du brauchst?

                  Kommentar


                  • #10
                    ja dort ist die ID. Aber ich suche mit dieser Funktion die zusammengehörenden rows. Es gibt nicht zwingend für jeden key[0] einen dazu passenden key2[0]. Aber für diejenigen, die es gibt, setzte ich den key[5].
                    Die anderen key[5] bleiben wie sie sind, ich möchte aber trotzdem alle anzeigen.

                    Kommentar

                    Lädt...
                    X