Ergebnis 1 bis 6 von 6
  1. #1
    Bismarckapfel
    Themenstarter
    Avatar von timroh
    Registriert
    07.2009
    Beiträge
    142

    for Schleife verkehrt

    Hallo,
    Gibt es eine Möglichkeit eine For Schleife von hinten nach vorne zu lesen ( bei einem Array)

    normal:
    $array = array(deutschland, schweiz);
    for($a=0; $a < count($array); $a++){
    echo $array[$a]. "<br>";
    }
    Ausgabe:
    deutschland
    schweiz


    meine Überlegung
    $array = array(deutschland, schweiz);
    for($a=count($array); $a > 0; $a--){
    echo $array[$a]. "<br>";
    }
    Ausgabe:

    schweiz


    Ich will aber das alle Daten ausgegeben werden.
    Danke schon im Voraus für die Antworten.
    Mit freundlichen Grüssen
    Tim Rohner

  2. #2
    Sonnenwirtsapfel Avatar von Hairy
    Registriert
    08.2007
    Ort
    Stuttgart/Ulm
    Beiträge
    2.389
    for($a=count($array); $a >= 0; $a--){


    (Erklärung: das erste Element eines Array hat immer Index 0. Deine Lösung zählt aber nur bis 1 runter, nicht bis 0.)
    MacBook Pro 15" (2010) – 2,66GHz i7 – 8 GB RAM – 750 GB HDD – High-Res Glossy Screen – OS X 10.7 + AirPortExtreme/Express
    Retired: MacBook (mid 2007) schwarz – 2,16GHz C2D – 2 GB RAM – 500 GB HDD
    iPhone 4S 32GB schwarz; iPad 2 UMTS 32GB schwarz


    Blog | Twitter

  3. #3
    Altländer Pfannkuchenapfel Avatar von gKar
    Registriert
    06.2008
    Ort
    Wetter (Ruhr)
    Beiträge
    4.456
    Und dann sollte man lieber bei count($array)-1 anfangen zu zählen! Das ist doch der Index des letzten Elements. Bei z.B. Count=5 lauten die Indizes 0 bis 4.
    (Ich möchte lieber gar nicht erst wissen, was beim Zugriff auf $array[count($array)] passiert...)
    * Wer nichts weiß, muss alles glauben.
    * Geduld mit der Streitsucht der Einfältigen! Es ist nicht leicht zu begreifen, dass man nicht begreift.
    Marie von Ebner-Eschenbach

    Mac-Tastaturlayout für Windows (z.B. in Bootcamp oder VM)

  4. #4
    Jerseymac Avatar von creative7even
    Registriert
    02.2005
    Alter
    30
    Beiträge
    454
    Zitat Zitat von gKar Beitrag anzeigen
    (Ich möchte lieber gar nicht erst wissen, was beim Zugriff auf $array[count($array)] passiert...)
    leider nichts - php liefert NULL (bzw. einen leeren string) - wirft jedoch keine Exception.
    Die schnellste Lösung wäre:

    Code:
    $items = array('one','two','three');
    $items = array_reverse($items);
    
    foreach($items as $key => $value) {
      ...
    }
    foreach- sind übringends schneller als for - Schleifen - und das nicht nur in der Ausführung.

  5. #5
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Allerdings kann ein $array[count($array)] - wenn es am falschen Ort ist - schnell einen neuen Index erstellen, was unter Umständen erhebliche "Skriptstörungen" hervorrufen kann…

  6. #6
    Cripps Pink
    Registriert
    01.2010
    Beiträge
    153
    $array[count($array)] ist so ein böser und falscher Code, das man den sofort mit "böse, falsch" im Gedächtnis ablegen sollte!

    Zwei Anmerkungen: Erstens kann man mit der Forschleife entsprechend der ersten Worten auch mehr, bspw. jeden zweiten, dritten Wert nehmen: for ($i = 0; $i < $c; $i+=2). Zudem lassen sich im ersten Teil auch weitere initialisieren. (s.u.)

    Zweitens ist foreach in PHP laufzeitmäßig nie schneller als das klassische for-$i. Außerdem sorgt das array_reverse im konkreten Falle für einen absurden Overhead, der mit einer rückwärtslaufenden Schleife einfach zu umgehen ist.

    Dazu kommt, dass der Bedingungsteil bei jeder Ausführung auf's neue ausgeführt wird. Das beudeutet also, dass gem. Post 1 jedes Mal die Elemente im Array gezählt werden. Die ändern sich aber definitiv nicht, denn eine verändernde Anzahl der Array-Elemente in PHP zwar möglich, aber das will man nicht (bitte nicht mal auf die Idee kommen).

    Die idealste Schleife ist daher für PHP:

    Code:
    // $array
    for ($i = 0, $c = count($array); $i < $c; $i++) {
      ...
    }
    Der erste Block wird nur einmal ausgeführt.

    Für Maps, oder assoziative Arrays, sind foreach natürlich am einfachsten und besten. Ohne Frage.

Ähnliche Themen

  1. Nano 3G gibt Podcasts verkehrt wieder
    Von redfoxle im Forum iPod classic/nano/shuffle
    Antworten: 1
    Letzter Beitrag: 12.07.2009, 13:23
  2. Antworten: 4
    Letzter Beitrag: 06.07.2009, 11:45
  3. Need for Speed Carbon verkehrt herum!?
    Von lifeofelias im Forum Spiele
    Antworten: 10
    Letzter Beitrag: 14.06.2009, 13:23
  4. Alles verkehrt herum !
    Von commander im Forum iPod classic/nano/shuffle
    Antworten: 6
    Letzter Beitrag: 09.04.2008, 18:03
  5. OS X 10.5.1 - Groß + Num. verkehrt seit Update!
    Von MacOkieh im Forum Mobil-Macs
    Antworten: 5
    Letzter Beitrag: 30.12.2007, 15:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •