Ankündigung

Einklappen
Keine Ankündigung bisher.

wenn Datensatz 0 dann wirf Zeile raus.

Einklappen

Neue Werbung 2019

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

  • wenn Datensatz 0 dann wirf Zeile raus.

    Hallo zusammen
    Folgendes Problem
    Ich habe eine foreach-Schlaufe:
    PHP-Code:
    foreach ($rows as $key) {
    if (
    $key=='0') {
    unset (
    $rows); //dann nimm die Zeile raus und trage sie nicht in die Datenbank. 
    Wie kann ich das lösen, damit ich weiss welchen der rows ich rausnehmen muss?
    Gibt es dazu eine elegante Lösung?
    Vielen Dank für eure Hilfe!


  • #2
    PHP-Code:
    //Array $rows definieren.
    $rows = array(1,2,3,4,0,5);

    //Verarbeitung / entfernen von "0"
    $result array_diff($rows,array(0));

    // Testweise Ausgabe von $result.
    print_r($result); 

    Kommentar


    • #3
      Danke, das ist aber noch nicht genau was ich suche.
      Der wirft ja nun einfach die 0 raus.
      Ich möchte aber, wenn key[1] =='0' dann soll er mir den ganzen row nicht in die DB laden. Ich müsste also die Nummer bekommen (in deinem Beispiel wäre das die 4) damit ich dann sagen kann
      unset ($rows[4]) resp. würde ich dann alle mit 0 in eine Variable ($null) schreiben, die ich dann so ausgeben kann:
      unset ($rows[$null])
      Sieht jemand eine Lösung?

      Kommentar


      • #4
        PHP-Code:
        //Array $rows definieren.
        $rows = array(array("bla",1,"Horst","Auto"),array("bluber",0,"Horst","Auto"),array("blub",2,"Horst","Auto"));

        //Verarbeitung / entfernen von "0"

        foreach($rows as $key => $value)
        {
            if(
        $rows[$key][1]==0) unset($rows[$key]);
        }
        $rows array_merge($rows);
        // Testweise Ausgabe von $result.
        print_r($rows); 

        Kommentar


        • #5
          Danke. Aber welchen Array muss ich nun in $rows einspeisen?
          Mein Code sieht so aus:
          PHP-Code:
          foreach ($rows as $key) {  Eintrag in DB 
          Wie und wo muss ich nun
          PHP-Code:
          $rows = array(array("bla",1,"Horst","Auto"),array("bluber",0,"Horst","Auto"),array("blub",2,"Horst","Auto")); 
          einsetzen?

          Kommentar


          • #6
            Wie liegen denn deine Ausgangsdaten überhaupt vor?
            Aus der Bezeichnung $rows und dem Beitrag #3 habe ich auf ein mehrdimensionales Array geschlossen.
            Deine "Werte" die du eintragen möchtest musst du ja irgendwoher haben.

            Kommentar


            • #7
              Ja die Werte kommen aus einer csv-Datei, das ist schon ein mehrdimensionaler Array:
              1,Fischer,Bert,Hamburg
              2,Stopper,Arthur,Köln
              3,Kundert,Werner,Stuttgart

              Aber wie nehme ich sie da rein? wäre das $rows= array(array(rows[1],array[rows2] etc. aber ich weiss ja nicht wieviele rows es hat..

              Kommentar


              • #8
                z.B. http://php.net/manual/de/function.fgetcsv.php

                Kommentar


                • #9
                  Ja eingelesen habe ich sie schon so:
                  PHP-Code:
                  if (($handle fopen("data.csv""r")) !== FALSE) {
                           while ((
                  $data fgetcsv($handle1000",")) !== FALSE
                            {
                                        
                  $encodedData = array(); 
                       foreach(
                  $data as $rawData){ 
                              
                  $encodedData[]=fixEncoding($rawData); //fix UTF-8
                          

                          
                  $rows[] = $encodedData
                      } 
                      
                  fclose($handle); 

                    foreach (
                  $rows as $key) { Eintrag in DB }


                  Hier weiss ich nun nicht wie ich deine Zeile einbaue.
                  PHP-Code:
                  $rows = array(array("bla",1,"Horst","Auto"),array("bluber",0,"Horst","Auto"),array("blub",2,"Horst","Auto")); 
                  Wie ginge das?

                  Kommentar


                  • #10
                    Die Zeile ist doch nur ein Beispiel array zum Testen. Das Array Rows hast du doch bereits. Schreib doch vor dein foreach ein
                    PHP-Code:
                    print_r($rows); 
                    Die von dir gepostete Zeile hat ja mit der eigentlichen Logik gar nichts zu tun.

                    Kommentar


                    • #11
                      Ja du hast natürlich Recht, der ganze Array gibt es in Rows.
                      Nun mache ich es also so:
                      PHP-Code:
                        foreach ($rows as $key) {

                      if(
                      $rows[$key[1]]=='0') unset($rows[$key]); 
                      Nun kommt aber Fehlermeldung:
                      Undefined offset: 280 in
                      Undefined offset: 222 in
                      Undefined offset: 856 in

                      Das sind die anderen Einträge in den Variable $key[1].
                      Wie kann ich das nun flicken?

                      Wenn ich es so mache:
                      PHP-Code:
                        foreach ($rows as $key) {

                      if(
                      $rows[$key][1]=='0') unset($rows[$key]); 
                      Erscheint die Fehlermeldung:
                      Illegal offset type in

                      Kommentar


                      • #12
                        PHP-Code:
                        foreach ($rows as $key => $value)  {

                        if(
                        $rows[$key][1]=='0') unset($rows[$key]);  


                        Mach ein print_r auf das Array kopiere mir 2 Datensätze (Kannst ja vorher die Daten anonymisieren und durch beliebige Werte austauschen). Ohne den Aufbau der Daten zu kennen kann man nur ins Blaue hinein raten und das ist müßig. Bin aber auch raus für heute, wenn du die genaue Struktur postest gucke ichs mir morgen an.

                        P.S. Das ist in diesem Fall für den Ar***
                        PHP-Code:
                        $rows[$key[1]] 
                        und was vollkommen anderes als
                        PHP-Code:
                        $rows[$key][1

                        Kommentar


                        • #13
                          Meinst du so hier:
                          Array ( [0] => S [1] => 55896 [2] => 0 [3] => H [4] => H [5] => [6] => [7] => Richard [8] => Thomas [9] => 1928 [10] => M [11] => [12] => [13] => [14] => Hamburg [15] => [16] => [17] => [18] => Rindsfleisch [19] => [20] => Audi [21] => [22] => [23] => [24] => )
                          Array ( [0] => S [1] => 65895 [2] => 0 [3] => H [4] => H [5] => [6] => [7] => Schmidt [8] => Lukas [9] => 1929 [10] => M [11] => [12] => [13] => [14] => Köln [15] => [16] => [17] => [18] => Kalbfleisch [19] => [20] => Renault [21] => [22] => [23] => [24] => )


                          Es ginge darum: Wenn [1] 0 ist, dann verwirf den ganzen row.

                          Kommentar


                          • #14
                            Also wenn das die vollständige Struktur ist, dann sind das zwei Arrays und nicht ein mehrdimensionales. Dann kann die Struktur von mit oben auch nicht funktionieren. Wenn ich mir allerdings die Importfunktion anschaue sollte da im Prinzip ein mehrdimensionales Array bei rauskommen.

                            Kommentar


                            • #15
                              unset ist doch Quatsch
                              PHP-Code:
                              foreach ($blub as $blubblub)
                              {
                                  if (
                              $blubblub[1] == 0)
                                    continue;

                                  
                              // Rest der Schleife

                              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                              Kommentar

                              Lädt...
                              X