K@llenMedlem sedan mars 20032 654 inlägg
Hejsan gurus,
Har ett problem jag inte lyckas få rätt på. Misstänker att det har med odefierat index i en array att göra. Felmeddelande:
Undefined offset: 46
$quoteText = $row['quoteText'];
$shortText = explode(" ", $quoteText);
for ($i = 0; $i < 47; $i++) {
echo $shortText[$i] . " ";
}
Hur bär jag mig åt för att få bort varningen?
cascaMedlem sedan feb. 20003 262 inlägg
Är du säker på att det alltid blir 47 element i arrayen?
Bättre att räkna antalet element i $shortText:
for ($i = 0; $i < count($shortText); $i++) {
echo $shortText[$i] . " ";
}
K@llenMedlem sedan mars 20032 654 inlägg
Oj, nej det är jag inte. Vill dock bara presentera 47 element.
Då får jag sätta villkoret i loopen dynamiskt. Tack casca. :)
K@llenMedlem sedan mars 20032 654 inlägg
Kod för att lösa problemet:
if ( count($shortText) < 47 ) { $z = count($shortText); } else { $z = 47; }
for ($i = 0; $i < $z; $i++) {
echo $shortText[$i] . " ";
}
voigtann1Medlem sedan juni 20018 810 inlägg
borde du inte kunna skriva det så här:
$z = min(count($shortText), 47);
drewMedlem sedan mars 2007748 inlägg
voigtann1 skrev:
borde du inte kunna skriva det så här:
$z = min(count($shortText), 47);
Jo, och skulle dessutom se snyggare ut. Tycker jag.
K@llenMedlem sedan mars 20032 654 inlägg
Tack för förbättringen voigtann1. Läste dock följande kommentar i dokumentationen, så snyggast är kanske inte alltid bäst:
I tested this with max(), but I suppose it applies to min() too: If you are working with numbers, then you can use:
$a = ($b \< $c) ? $b : $c;
which is somewhat faster (roughly 16%) than
$a = min($b, $c);
I tested this on several loops using integers and floats, over 1 million iterations.
I'm running PHP 4.3.1 as a module for Apache 1.3.27.
voigtann1Medlem sedan juni 20018 810 inlägg
Men i ditt fall så kör du metoden count() två gånger, man få kolla vad som passar dig bäst, i personens exempel så är det 1 miljon loopar, vilket förmodligen inte är något man kommer ha i någon normal loop.