Autor Zpráva
Casero
Profil
chtěl bych se zeptat..jak zapsat pole v poli toto mi nefunguje $pole[$neco[2]]
tiso
Profil
$pole[$neco][2]
Casero
Profil
tiso
heh ale já bych potřeboval to poel v poli prostě mám proměnou $neco[2]=1 a tu potřebuju dat do toho poel $pole[] ...nejde to???..musím si prvně tu proměnou $neco[2] hodit do $neco2??
tiso
Profil
ako presne? daj príklad s viacerými prvkami..
Casero
Profil
takto vypadá moj skript
$neco[1]=1;....
$neco[3]=4;
$haluz=rand(1,3);

$pole[$neco[$haluz]]["hodnota"]
Casero
Profil
ale takto to nefunguje
Peca
Profil
Píše to chybu? S tou proměnnou $neco2 to funguje?
Zkus $pole[($neco[2])], ale netestoval jsem to...
Casero
Profil
Peca
ne, nepomohlo..nehlásí to chybu ale prostě nic to nevypíše, prostě jakoby v tom poli nic nebylo
Peca
Profil
Tak jsem to teda vyzkoušel. Toto mně funguje:
$p1=array('a',3,'x');

$p2=array(1,2,0);
echo $p1[$p2[1]];
Chyba bude někde jinde... Nečísluješ třeba pole od jedničky?
Casero
Profil
Peca
taky sem přišel na to že je to to divný..ale kde mám v tom případě chybu
$cislo_utoku[2]=1;
$cislo_utoku=1;
echo $hrac[2][3][$cislo_utoku[2]][5]["rychlost"]." + ".$hrac[2][3][$cislo_utoku][5]["rychlost"];

vypíše +7 a mělo by 7+7 ..kde je tam chyba??
Casero
Profil
hhe..eště zajímavost..proč se to slovo utoku tady rozděluje tou mezerou...ani při editaci to nejde opravit??:
tiso
Profil
Casero $pole[$neco[$haluz]]["hodnota"]
Stále nerozumiem čo potrebuješ... Či vytvoriť také $pole s indexami podľa hodnôt poľa $neco, alebo chceš vypísať náhodnú hodnotu z poľa $neco

ad. zajimavost - príliš dlhé slovo
Casero
Profil
Stále nerozumiem čo potrebuješ... Či vytvoriť také $pole s indexami podľa hodnôt poľa $neco
toto..a už spíš jen se konkretizuju na ten př. co sme uvedl nahoře a co nejde pač vypisuje +7 tzn...že to pole v poli tam nefunguje...
rabbit
Profil
Hehe, chyba je úplně jasná...

V prvním řádku máš proměnnou $cislo_utoku typu pole, kterou si v druhém řádku přepíšeš na skalární (integer).

Takže ve třetím řádku už $cislo_utoku[2] neexistuje.
Peca
Profil
$cislo_utoku[2]=1;
$cislo_utoku=1;
No jo... Když si z pole uděláš integer...
Tak už nic...
nightfish
Profil
$cislo_utoku[2]=1;
$cislo_utoku=1;


tenhle kus kódu udělá následující (imho):
první řádek - do pole $cislo_utoku s indexem 2 uloží hodnotu 1
druhý řádek - změní typ proměnné $cislo_utoku z "pole" na "číslo" a uloží do něj 1

být tebou zapnu error_reporting na E_ALL jestli už nemáš... mohlo by to prozradit něco víc
jestli jsem mimo tak sorry

EDIT: pozdě pozdě
Casero
Profil
rabbit
heh..dneska du spat..zítra to prozkouším..ale to $cislo_utoku sem zavedl až nefungovalo to pole $cislo_utoku ...,ale zkusí to...zatím dík...ale určitě pište jestli ěště něco tam vidíte
Peca
Profil
Já tam hlavně vidím pěti rozměrné pole... Možná vhodná doba pro refactoring...
rabbit
Profil
To Peca & nightfish: první ;-P
rabbit
Profil
Pánové, ale v souvislosti s Caserovým problémem jsem zjistil zajímavou věc ... chtěl jsem ve svém příspěvku přidat Caserovi sprdnutí, že si má zapnout error_reporting(E_ALL), a že by mu to hned napsalo: "Notice: Undefined offset: 2 in xxx on line yyy", ale ke svému údivu jsem zjistil, že toto funguje jen, pokud je daná proměnná typu pole.
Když se odvoláváte na klíč pole na proměnné, která není typu pole, blbec php mlčí. Pak se jeden může divit, že to php občas proklínám.
tiso
Profil
rabbit
To bude tým že pri premennej sa offset netestuje, iba pri poli... V PHP nie je default kontrola typov, tak to tak aj vyzerá...
rabbit
Profil
Njn, proto taky občas řvu, že "zlatá Java" ;-) ... alespoň, co se týče nároků na typovou přesnost proměnných. Php je v tomto tak hodně "user/programmer friendly", až je to častokrát naškodu.

Pro někoho jsem možná opravdu "objevil Ameriku", ale to co jsem popsal výše (nepřítomnost Notice) mě opravdu překvapilo.
Peca
Profil
Tipuju, že php to bere jako string (např. "2") a potom je v poli na prvním indexu pole opravdu znak '2' a na ostatních budou nuly. Asi se pletu, ale aspoň trochu to smysl dává, ne? :-)
Casero
Profil
všem děkuji a rady..opravdu sem to přetypovaval...ale bohužel hned na dvou místech, proto sme na to nepřišel když sem odstranil to poprvé...
Toto téma je uzamčeno. Odpověď nelze zaslat.