foreach: Letzter Datensatz wird nicht ausgegeben

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

  • foreach: Letzter Datensatz wird nicht ausgegeben

    Hallo. Hab ein Problem mit foreach. Es soll ein Array durchlaufen und anschließend Teile davon ausgegeben werden. So weit macht foreach das auch - bsi auf den letzten Datensatz. ich weiß nicht woran das liegt. Vielleicht fällt ja einem euch der Fehler auf.

    Der Code:

    Quellcode

    1. $a = 0;
    2. foreach($optsarray[$a] as $key) {
    3. $suchmuster = "/<%2%(".strtoupper($optsarray[$a]['ID']).")%2%>/si";
    4. $optsausgabe = preg_replace($suchmuster, $optsarray[$a]['Name'], $optsausgabe);
    5. $a++;
    6. }
    7. $optsausgabe = preg_replace("/((<%2%)(.+?)(%2%>))/si", '', $optsausgabe);
    8. echo $optsausgabe;


    Das Array ist wie folgt aufgebaut:

    Quellcode

    1. $optsarray = array(
    2. 0 => array(
    3. 'ID' => 'OPTS0',
    4. 'Name' => 'Installationsberatung',
    5. 'Text' => 'Installtionsberatung',
    6. 'Preis' => '20.00',
    7. 'Wert' => '1'
    8. ),
    9. 1 => array(
    10. 'ID' => 'OPTS1',
    11. 'Name' => 'zusätzliche MYSQL-Datenbank',
    12. 'Text' => 'zusätzliche MYSQL-Datenbank',
    13. 'Preis' => '1.00',
    14. 'Wert' => '2'
    15. ),
    16. 2 => array(
    17. 'ID' => 'OPTS2',
    18. 'Name' => 'CGI-Skripte zulassen',
    19. 'Text' => 'CGI-Skripte zulassen',
    20. 'Preis' => '1.00',
    21. 'Wert' => '4'
    22. ),
    23. 3 => array(
    24. 'ID' => 'OPTS3',
    25. 'Name' => 'Eigene IP-Adresse',
    26. 'Text' => 'Eigene IP-Adresse',
    27. 'Preis' => '7.00',
    28. 'Wert' => '8'
    29. ),
    30. 4 => array(
    31. 'ID' => 'OPTS4',
    32. 'Name' => 'FTP-Backup ( 1 GigaByte )',
    33. 'Text' => 'FTP-Backup ( 1 GigaByte )',
    34. 'Preis' => '5.00',
    35. 'Wert' => '16'
    36. ),
    37. 5 => array(
    38. 'ID' => 'OPTS5',
    39. 'Name' => 'sonstiges',
    40. 'Text' => 'sonstiges',
    41. 'Preis' => '0.00',
    42. 'Wert' => '32'
    43. )
    44. );
    Alles anzeigen


    Gruß Michel.
  • Hallo,

    *augenreib*
    Ähh Sorry ... was willst du denn machen?

    Willst du das Array auf der obersten Ebene durchlaufen? Dann brauchst du keinen Index Operator in der foreach.
    Oder willst du mit der foreach die Arrays auf der 2. Ebene durchlaufen? Dann versteh ich nicht warum du
    jedesmal inkrementierst ($a).


    Gruß,
    X-Eon


    Edit: Du durchläufst mit deiner foreach die Arrays auf der 2. Ebene und die haben nur 5 Elemente. Deswegen fehlt dir dein 6. Element auf der ersten Ebene, denn da ist die foreach zu ende.
    Zur Veranschaulichung:
    1. foreach Durchlauf: $optsarray[0][ID]
    2. $optsarray[1][NAME]
    3. $optsarray[3][Text]
    4. $optsarray[4][Preis]
    5. $optsarray[5][Wert]