Fragen zu "foreach"

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fragen zu "foreach"

    Hi alle zusammen,

    zwei Fragen sind es eigentlich:

    1. Gibt es einen Grund, der mich dazu veranlassen sollte, forech gegenüber einer for-schleife zu verwenden?
    Ist foreach schneller? Warum nimmt man es? Wann nimmt man es? Nimmt man es auch bei komplexen Sachen?

    Theorie:
    Nein.
    Warum?
    Im Grunde finde ich es auswändiger, wenn ich ein Array vor mir liegen habe, dass in etwa so aussieht:


    Quellcode

    1. Array
    2. (
    3. [primary] => Array
    4. (
    5. [cat_id] =>
    6. [cat_title] =>
    7. [cat_content] => Array
    8. (
    9. [secondary] => Array
    10. (
    11. [subcat_id] =>
    12. [cat_id] =>
    13. [subcat_title] =>
    14. [subcat_content] => Array
    15. (
    16. [tertiary] => Array
    17. (
    18. [item_id] =>
    19. [subcat_id] =>
    20. [item_headline] =>
    21. [item_copyright] =>
    22. [item_description] =>
    23. [item_details] =>
    24. [item_prices] =>
    25. [item_images] =>
    26. [item_highlight] =>
    27. )
    28. )
    29. )
    30. )
    31. )
    32. )
    Alles anzeigen


    Ist sowas legitim?

    Quellcode

    1. if(isset($_GET['f'])) {
    2. foreach ($PRICES as $format => $formatvalue) {
    3. if ($format == $_GET['f']) {
    4. echo "Format: $format<br />\n";
    5. foreach ($formatvalue as $grammage => $grammagevalue) {
    6. echo " Grammage: $grammage<br />\n";
    7. foreach ($grammagevalue as $requierement => $pricevalue) {
    8. echo " Requirement: $requierement; Price: $pricevalue<br />\n";
    9. }
    10. }
    11. }
    12. }
    13. }
    Alles anzeigen


    Was ist dann noch besser? Also von der Textmenge an Code, unterscheidet es sich gegenüber einer for-Schleife im Grunde nicht.

    2. Wo gibts bei foreach einen Zähler?
    Wenn ich jede zweite Zeile in einer Tabelle anderfarbig haben möchte schreibe ich ja eigentlich ($i % 2). Will ich die Kopfzeile der Tabelle alle 100 Einträge wiederholen ebenfalls ($i % 10 == 0).
    Wie macht man sowas mit foreach?


    Für Antworten wäre ich dankbar.
    PS: Ich kenne die Manuals, aber so richtig aufschlussreich fande ich's nicht :/


    lg icronosonic
  • Ich finde das Konzept von foreach auch super. Die Anwendung ist auch um einiges lesbarer, wenn man ein par Arrays komplett behandeln möchte.

    Zudem kann man die zwei Farben z.B. viel Speicherplatzeffizienter durch boolsche Variablen lösen:

    Quellcode

    1. <?
    2. $color = true;
    3. foreach ( $array as $value )
    4. {
    5. // Ausgabe
    6. echo $color ? "#ff0000" : "#cccccc";
    7. $color = ! $color;
    8. }
    9. ?>



    for-Schleifen bleiben aber inersetzlich, wenn man unhübsche foreach-Schleifen mit break; und skip; Anweisungen vermeiden will.
    Die Japaner glauben jetzt auch, sie könnten den Superrechner verkaufen. Das wäre
    so, als würde man einen Jumbo-Jet nehmen, vorne und hinten die Spitzen absägen,
    davon 10 Stück zusammenschweißen und als ultimativen Super-Jet verkaufen.