Array-Frage

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

  • Array-Frage

    Hallo,

    ich möchte aus einem Array (ca. 1000 Einträge) ein Neues Array erstellen das aus dem Quellarray z.b. die 20 Einträge übernimmt z.b. die Zwischen 10-30, wie könnte ich dies am geschicktesten lösen? Ich könnte es ja mit "for" lösen, aber ich denke das es auch eine einfachere möglichkeit gibt!

    Danke Lukaso

  • #2
    Re: Array-Frage

    nö, for passt schon ganz gut.
    zugriff über nummerischen index, und dann einfach ins neue array einfügen.

    was performanteres oder spezielleres gibt's da m.E. auch nicht.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      OK, Danke, dann blein ich dabei

      Kommentar


      • #4
        wie wärs mit: foreach? ist extra für Arrays
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          Original geschrieben von marc75
          wie wärs mit: foreach? ist extra für Arrays
          naja, wenn sie 1. schon nen numerischen index haben ... und zweitens fällt mir spontan kein weg ein, damit gezielt elemente anzusprechen ... for each element eben ... oder nicht?

          wenn das array über nen db-query entsteht, ließe sich sicher etwas besseres finden^^, bei file() etc. wohl nicht.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            wie wärs damit ?

            http://de.php.net/array_slice
            mfg,
            [color=#0080c0]Coragon[/color]

            Kommentar


            • #7
              Kann man eigentlich innerhalb einer foreach-Schleife eine weitere foreach-Schleife durchlaufen lassen oder führt das zu Problemen?

              Und zwar geht es darum, daß ich Checkboxen (name = \"auction[]\") für Artikel per foreach abfrage. Das funktioniert auch einwandfrei. Nun habe ich aber noch Ebene von Checkboxen, mit deren Hilfe man jedem Artikel besondere Features zuweisen kann. Das hieße ja, daß ich in der vorhandenen foreach-Schleife eine weitere ausführen müßte, oder irre ich mich da?

              Ich kann nirgends etwas dazu finden.
              Zuletzt geändert von Emanon; 17.07.2004, 18:41.

              Kommentar


              • #8
                Original geschrieben von Emanon
                Kann man eigentlich innerhalb einer foreach-Schleife eine weitere foreach-Schleife durchlaufen lassen oder führt das zu Problemen?
                Wenn es sich um das gleiche Array handelt vermutlich ja, denn Foreach setzt den internen Array Elementzeiger um 1 höher.....
                Wäre es das gleiche Array würde im Zweiten Foreach wiederrum der Array Zeiger auf 0 gesetzt....

                Das würde vermutlich sogar eine Endlosschleife geben......

                Bedenkenlos dagegen kannst du folgendes schon machen......

                PHP-Code:
                <?
                $harr['test'][0] = "ich";
                $harr['test'][1] = "werde";
                $harr['test'][2] = "denke";
                $harr['blob'][0] = "ich";
                $harr['blob'][1] = "funzen";

                foreach($harr as $tempkey => $tempvalue) {
                  echo "<b>".$tempkey."</b><br>";
                  foreach ($tempvalue as $var) {
                    echo $var."<br>";
                   }
                }
                ?>
                [color=blue]MfG Payne_of_Death[/color]

                [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                [color=red]Merke:[/color]
                [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                Murphy`s Importanst LAWS
                Jede Lösung bringt nur neue Probleme
                Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                Kommentar


                • #9
                  Es handelt sich leider nicht um den gleichen Array, denn der erste ergibt sich aus Checkboxen namens auction[] und der zweite aus solchen namens payment[].

                  Die foreach-Schleife für auction[] funktioniert auch einwandfrei. Aber nun kann man mit der Checkbox payment[] für jedes Element des ersten Arrays noch die Zahlungsmethoden bestimmen.
                  PHP-Code:
                  foreach ($_POST['auction'] as $selected)
                  {
                    foreach (
                  $_POST['payment'] as $payments)
                    {
                  ...
                  if(
                  $row['current_bid'] != 0.00) {
                  $query "INSERT INTO tabelle VALUES ('".$feld1."', '".$feld2."', '".$payments."', '".$etc."')";
                  ... 
                  viele weitere Funktionen ...
                  }else{
                  $query "UPDATE tabelle SET feld1 = '$feld1',  feld2 = '$feld2', feld3 = '$feld3', payment = '$payments', etc ='$etc' WHERE id='$selected'";
                  ... 
                  viele weitere Funktionen 
                  ...
                  }
                  ...
                  weitere Funktionen
                  ...
                  //end foreach payment
                  //end foreach auction 
                  Das scheint aber nicht zu funktionieren, denn es wird immer nur der letzte ausgewählte Punkt angenommen.

                  Kommentar


                  • #10
                    Es handelt sich leider nicht um den gleichen Array
                    wieso leider?
                    führst du die query auch jedesmal aus?
                    denn es wird immer nur der letzte ausgewählte Punkt angenommen.
                    wie hast du das geprüft?
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Leider, weil die Antwort von Payne_of_Death nicht darauf zutrifft und ich nichts damit anfangen kann.

                      Ja, die query muss ja für jedes Element ausgeführt werden, damit die Daten in der DB aktualisiert oder eingetragen werden.

                      Ich probiere das jedesmal mit Testartikeln aus, denn ich habe das Skript offline laufen.

                      Kommentar


                      • #12
                        Leider, weil die Antwort von Payne_of_Death nicht darauf zutrifft und ich nichts damit anfangen kann.
                        er bezog sich aber imho auf den letzten teil des zitates, also, verschachteltes foreach für ein und dieselbe var führt u.u. zu problemen ...
                        Ja, die query muss ja für jedes Element ausgeführt werden, damit die Daten in der DB aktualisiert oder eingetragen werden.
                        es war mir schon klar, daß die quäry jedesmal ausgeführt werden muß! meine frage war, ob du sie auch jedesmal ausführst ...
                        Ich probiere das jedesmal mit Testartikeln aus, denn ich habe das Skript offline laufen.
                        hast dus mal mit nem simplen echo probiert.?

                        du kannst soviele foreach verschachteln, wie du willst, sofern es sich dabei immer um verschiedene variablen handelt, sollte es keine probleme geben!
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          es war mir schon klar, daß die quäry jedesmal ausgeführt werden muß! meine frage war, ob du sie auch jedesmal ausführst ...
                          ja, die querys werden jedesmal ausgeführt.
                          hast dus mal mit nem simplen echo probiert.?
                          Natürlich lasse ich mir die relevanten Variable zur optischen Kontrolle am Ende des Dokumentes mit echo ausgeben. Von daher weiß ich ja auch, daß nicht alle Angaben der zweiten foreach-Schleife berücksichtigt werden.
                          du kannst soviele foreach verschachteln, wie du willst, sofern es sich dabei immer um verschiedene variablen handelt, sollte es keine probleme geben!
                          Somit habe ich schonmal eine mögliche Fehlerquelle ausgeschlossen. Nun kann ich mein Skript Punkt für Punkt durchgehen und weitere Fehler ausschließen oder korrigigeren. Nur über diese Frage konnte ich nirgends eine Antwort finden.

                          Vielen Dank für Eure Geduld.

                          Kommentar


                          • #14
                            ja, die querys werden jedesmal ausgeführt.
                            steht irgendwie im widerspruch zu dem hier?
                            Das scheint aber nicht zu funktionieren, denn es wird immer nur der letzte ausgewählte Punkt angenommen.
                            Natürlich lasse ich mir die relevanten Variable zur optischen Kontrolle am Ende des Dokumentes
                            mach das doch gleich nach dem jeweiligen foreach, dann weißt du, daß die vars ihre werte kriegen. setzt du von die query-strings jeweils ein echo, siehst du zumindest mal alle zusammengebastelten queries.

                            und jetzt, um einmal meinen virtuellen beifahrer zu zitieren,
                            komm schon, du schaffst es!
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              Das scheint aber nicht zu funktionieren, denn es wird immer nur der letzte ausgewählte Punkt angenommen.
                              Das bezog sich auf das zweite foreach, in dem eigentlich diese querys ausgeführt werden. Und zwar läuft es folgendermaßen ab. Der User bekommt eine Liste variabler Artikel angezeigt und kann alle oder einzelne per Checkbox (name=\"auction[]) auswählen, die er bearbeiten möchte oder aus der DB löschen will. Für den Fall des Bearbeitens, soll jedem Artikel ein oder mehrere Features per variablen Checkboxen (name=\"payment[]) zugewiesen werden (zweite foreach). Das erste foreach funktioniert auch einwandfrei, aber bei der zweiten übernimmt das Skript nur die erste der payment-Checkbox.

                              mach das doch gleich nach dem jeweiligen foreach, dann weißt du, daß die vars ihre werte kriegen. setzt du von die query-strings jeweils ein echo, siehst du zumindest mal alle zusammengebastelten queries.
                              Also unmittelbar nach der ersten foreach:
                              PHP-Code:
                              echo "<pre>";
                              print_r($_POST['auction']);
                              echo 
                              "</pre>"
                              und nach der zweiten:
                              PHP-Code:
                              echo "<pre>";
                              print_r($_POST['payment']);
                              echo 
                              "</pre>"

                              NACHTRAG:
                              OK, die arrays werden korrekt ausgeführt. Also muss der Fehler woanders stecken. Dann werde ich mich mal weiter auf die Suche machen.

                              Vielen Dank fürs erste.
                              Zuletzt geändert von Emanon; 18.07.2004, 16:16.

                              Kommentar

                              Lädt...
                              X