Undefined offset: 190
Frank Lemm
- php
0 Henryk Plötz0 Tom
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.
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++) {
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
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.