webForumDet fria alternativet

Undefined offset

7 svar · 958 visningar · startad av K@llen

K@llenMedlem sedan mars 20032 654 inlägg
#1

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
#2

Ä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
#3

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
#4

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
#5

borde du inte kunna skriva det så här:

$z = min(count($shortText), 47);
drewMedlem sedan mars 2007748 inlägg
#6

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
#7

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
#8

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.

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb