Autor | Zpráva | ||
---|---|---|---|
rapid Profil * |
#1 · Zasláno: 7. 4. 2014, 08:21:59
Dobrý den, řeším banální na oko banální problém ale nějak i přsto ho nemohu rozchodit. Proměná off mi nejde správně nasadid. Vždy vypíše o výsledek níž. Nevíte kde dělám chybu? Děkuju
for($i=1;$i <= 241;$i++){ if(!empty($obce[$i] < 99){ ++$e;$j++; $mapa = strtr($obce[$i],$kraj_arr); $off[$e] = $mapa; }elseif(!empty($obce[$i] > 99){ $obec->mapa = $off[$j]; } } |
||
anonymníí Profil * |
#2 · Zasláno: 7. 4. 2014, 08:25:56
rapid:
Pole se indexují od nuly. |
||
rapid Profil * |
#3 · Zasláno: 7. 4. 2014, 08:27:48 · Upravil/a: rapid
To jsem zapoměl vypsat. Před cyklem mám: $i = 0;$e = 0;$j = 0;
Zajímavé je, že když chci příčíst 1, tak mi to nevypíše vůbec nic a přitom když by mi to uznal, tak je po problému. Nechápu co se mu nelíbí na $kr = ($j + 1); $kr = ($j + 1); $obec->mapa = $off[$kr]; Ale je divný, že $e++; nebo ++$e; Vždy začíná jedničkou. |
||
anonymníí Profil * |
#4 · Zasláno: 7. 4. 2014, 09:01:53
rapid:
„Ale je divný, že $e++; nebo ++$e; Vždy začíná jedničkou.“ Ty dva zápisy samozřejmě nejsou ekvivalentní, jen v situaci, v jaké je používáš ty, to tak vypadá (s tím sdamotným $e pracuješ až následně). „Před cyklem mám: $i = 0;$e = 0;$j = 0;“ To nevadí, Podstatné je, že cyklus začíná jedničkou (for ($i = 1...), takže na tom, co je před cyklem v $i nezáleží. Zápis $kr = ($j + 1); je v pořádku, chyba bude jinde. Mimochodem, netestoval jsem, ale: if(!empty($obce[$i] < 99) if (!empty($obce[$i]) && $obce[$i] < 99)
|
||
rapid Profil * |
#5 · Zasláno: 7. 4. 2014, 09:02:39 · Upravil/a: rapid
Tak tohle mi hlava nebere. Zkusil jsem nahradit ++$e za $e += 1; a chová se úplně stejně. Když mu dám mínus, tak to přepočítá, ale plus vyhodí prázdné hodnoty.
Ta podmínka je napsaná jinak. Jsem kod orezal a v podmínce udělal chybu. for jsem dal na nulu, ale ani to nepomohlo. Zkusím za zamyslet a cyklus for zaměnit za foreach. potom by to mohlo šlapat. Nahradil jsem to za foreach a chová se to úplně stejně. Já tomu vůbec nerozumím. Něco mi blokuje aby sem mohl vypsat správné výsledky. Prošel jsem celej proces i předním a nikde není nic co by to zapříčinilo. Chyba musí nastat v cyklu, ale jsem asi slepej protože mi vše přijde správně. Největší prel je, že vše je správně jediný co mi brání k funkčnímu výsledku je přičíst 1. To mi paradoxně nedovolí. |
||
DarkMeni Profil |
#6 · Zasláno: 7. 4. 2014, 09:38:04
Čeho chceš dosáhnout a co je v proměnné $kraj_arr, $obce a $off? Nebo ukaž co je okolo toho cyklu
|
||
rapid Profil * |
#7 · Zasláno: 7. 4. 2014, 09:52:40
chci dosáhnout výpisu obcí z kraje. Bohužel to podtatné jsem napsal a jiné věci by to jen komplikovali
|
||
Joker Profil |
#8 · Zasláno: 7. 4. 2014, 11:04:27
rapid:
„Zkusil jsem nahradit ++$e za $e += 1; a chová se úplně stejně.“ Tak ještě zbývá vyzkoušet $e = $e + 1; a zjistit, že to překvapivě povede k úplně stejnému výsledku.
Místo bezhlavého zkoušení něco změnit s tím, že to třeba pomůže* se raději zamyslete, čeho chcete dosáhnout. Není třeba problém v tom, že $e zvyšujete moc brzy? Nemá být nejdřív $off[$e] = $mapa; a až potom zvýšení $e?
Předčasné (nebo naopak příliš pozdní) zvýšení indexu bývá obvyklou příčinou problému „index je o 1 jinak než má být“. * Jakkoliv „bezhlavé zkoušení něco změnit s tím, že to třeba pomůže“ je zdá se v poslední době populární i mimo programování, není to moc efektivní strategie. |
||
Časová prodleva: 10 let
|
0