Autor | Zpráva | ||
---|---|---|---|
Ondra28 Profil * |
Zdravím
mám skriptík na aritmetický průměr.. <?php $pole = Array(5,5,10,8); $soucet = 0; for($i=0,$pocet = count($pole);$i<=$pocet;$i++) { $soucet += $pole[$i]; } echo $soucet/$pocet; ?> Jako normálně to funguje jen to vyhazuje Notice: Notice: Undefined offset: 4 in D:\wamp\www\prumer.php on line 6 Jak se mám této Notice zbavit ? |
||
tiso Profil |
#2 · Zasláno: 22. 9. 2009, 17:37:49
Ondra28
$soucet=array_sum($pole); |
||
Ondra28 Profil * |
#3 · Zasláno: 22. 9. 2009, 17:41:37
to je pěkný o týhle funkci sem nevěděl ale můj případ to neřeší..(:
Prostě berte v úvahu že neexistuje array_sum a furt jen nevím jak se zbavit té NOTICE |
||
WanTo Profil |
#4 · Zasláno: 22. 9. 2009, 17:41:49
Oprav si podmínku cyklu na $i < $pocet. Jestliže se pole v PHP indexuje od nuly, tak poslední prvek má index N-1 (kde N je počet prvků pole).
|
||
Ondra28 Profil * |
#5 · Zasláno: 22. 9. 2009, 17:45:46
Jou, dík
|
||
AM_ Profil |
#6 · Zasláno: 23. 9. 2009, 12:02:36
1) je zbytečné zavádět proměnnou $pocet, kratší a čitelnější je $i < count($pole)
2) na procházení polem je ve většině případů lepší použít konstrukci foreach |
||
nightfish Profil |
#7 · Zasláno: 23. 9. 2009, 12:38:57
„je zbytečné zavádět proměnnou $pocet, kratší a čitelnější je $i < count($pole) “
ovšem pak se bude count($pole) vyhodnocovat při každém průchodu cyklem, což nemusí být nejvhodnější |
||
AM_ Profil |
#8 · Zasláno: 23. 9. 2009, 15:08:32
nightfish
nemyslím si, že funkce count() by byla nějak drasticky náročná, proto bych upřednostnil čitelnost. Ale stejně optimální řešení je zde foreach, který je procházení polem šitý na míru. |
||
Joker Profil |
#9 · Zasláno: 23. 9. 2009, 15:24:19
AM:
„nemyslím si, že funkce count() by byla nějak drasticky náročná“ Jak se říká, stokrát nic umořilo osla. Určitě je lepší se vyhnout zbytečnému volání funkce uvnitř cyklu. |
||
Ondra28 Profil * |
#10 · Zasláno: 23. 9. 2009, 18:28:10
Ok, pro příště volím foreach x)
|
||
Časová prodleva: 15 let
|
0