Autor Zpráva
rapid
Profil *
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 *
rapid:
Pole se indexují od nuly.
rapid
Profil *
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 *
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)
empty vrací true/false, tedy 1 nebo 0, a to nikdy nebude větší než 99. SPrávně by mělo být if (!empty($obce[$i]) && $obce[$i] < 99)
rapid
Profil *
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
Čeho chceš dosáhnout a co je v proměnné $kraj_arr, $obce a $off? Nebo ukaž co je okolo toho cyklu
rapid
Profil *
chci dosáhnout výpisu obcí z kraje. Bohužel to podtatné jsem napsal a jiné věci by to jen komplikovali
Joker
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: