Frank Lemm: Undefined offset: 190

Hallo!

<?php
$random_review = $location."quotes.inc";
srand((double)microtime()*1000000);
if (file_exists($random_review)) {
$array = file($random_review);
for($i = 0; $i <= sizeof($array) ; $i++) {
if (preg_match("/\r/", $array[$i]))
$good_array[$i] = chop($array[$i]);
}
$randval = rand(0, sizeof($good_array));
echo $good_array[$randval];
}
else {
echo "error: can't open $random_review file";
}
?>

Bekomme bei der Ausgabe folgenden Fehler angezeigt: Undefined offset: 190 on line 7.

Woran liegt das? Was kann ich tun?

Gruß, Frank.

  1. Moin,

    Woran liegt das?

    Du greifst auf ein Array an einer Stelle zu die es in dem Array nicht gibt.

    Was kann ich tun?

    Schaue nach, welche Zahl sizeof() für ein Array mit 3 Elementen ausgibt (also $a = Array("foo", "bar", "baz"); echo sizeof($a);). Überlege dir auf welche Indizes du in diesem Array zugreifen kannst ($a[0]: ja, $a[1]: ja, etc ...) und wie du eine for-Schleife formulieren würdest um alle drei Elemente auszugeben. Baue in diese for-Schleife jetzt das sizeof ein. Vergleiche das Ergebnis mit

    for($i = 0; $i <= sizeof($array) ; $i++) {

    --
    Henryk Plötz
    Grüße von der Ostsee
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Hello,

      Was kann ich tun?

      Schaue nach, welche Zahl sizeof() für ein Array mit 3 Elementen ausgibt (also $a = Array("foo", "bar", "baz"); echo sizeof($a);). Überlege dir auf welche Indizes du in diesem Array zugreifen kannst ($a[0]: ja, $a[1]: ja, etc ...) und wie du eine for-Schleife formulieren würdest um alle drei Elemente auszugeben. Baue in diese for-Schleife jetzt das sizeof ein. Vergleiche das Ergebnis mit

      for($i = 0; $i <= sizeof($array) ; $i++) {

      Der Tipp mag zwar theoretisch richtig sein, aber für PHP seit 4.1.x ist er praxisfremd. ;-)

      Benutze lieber die speziellen Array-Funktionen von PHP für die Schleifen. Die sind schneller und sicherer.

      siehe foreach() http://de2.php.net/manual/de/control-structures.foreach.php

      und mach Dir eine andere Vorstellung von "Arrays" in PHP. Es isnd verkettete Listen

      <img src="http://selfhtml.bitworks.de/EinfachesArray500.gif" border="0" alt="">

      bzw. Baumstrukturen.

      <img src="http://selfhtml.bitworks.de/VerzweigtesArray500.gif" border="0" alt="">

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Danke für die Hilfe! ;-)

        So funktioniert es jetzt, mit foreach hab ichs nicht hinbekommen :-(

        <?php
        $random_review = $location."quotes.inc";
        srand((double)microtime()*1000000);
                 if (file_exists($random_review)) {
        $array = file($random_review);
                 for($i = 0; $i < sizeof($array) ; $i++) {
        if (preg_match("/\r/", $array[$i]))
        $good_array[$i] = chop($array[$i]);
        }

        $randval = rand(0, sizeof($good_array));
        echo $array[$randval];
        }
                           else {         echo "error: can't open $random_review file";
        }
        ?>

        Gruß, Frank.