Naučit se SQL Naučit se SQL
Pouze tento týden až 80% sleva na SQL jazyky
Zamiluj si programování! Až 80 % bodů na prémiový obsah zdarma. Více informací

Diskuze: php7.2 vícerozměrná pole

PHP PHP php7.2 vícerozměrná pole American English version English version

Aktivity (1)
Avatar
Petr
Člen
Avatar
Petr:6.6.2018 21:38

V php7 mi fungoval zápis vícerozměného pole (Linux Mint)
$i['ii']=arra­y('b'=>'bb','c'=>'cc','e­'=>array('f'=>'ff')­);
V php7.2 se pole 'e' ztratí, zůstane jen b a c (Linux Lite)

Zkusil jsem: HTML je bezstavový a pamatovat si více voleb na stránce na jedno odeslání nevím jak jinak řešit, než přes SESSION. Je to záměr blokovat vícerozměrná pole v SESSION?

Chci docílit: Používám pole v SESSION ($i) pro rozlišení násobného POSTu ve stránce.

 
Odpovědět 6.6.2018 21:38
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Petr
Petr Čech:6.6.2018 23:42

Mně to normálně funguje v php 7.2...

Editováno 6.6.2018 23:42
Nahoru Odpovědět  +3 6.6.2018 23:42
the cake is a lie
Avatar
Odpovídá na Petr
Martin Štěpánek :6.6.2018 23:56

Dostaneš to vůbec tím postem? Jakože dostane se to vůbec na server? Pořádně si projdi jednotlivé kroky, kterými se to má dostat do té proměnné, i kdyby sis byl jistý, že to funguje. Ve verzi PHP určitě problém nebude.

Nahoru Odpovědět 6.6.2018 23:56
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Petr
Člen
Avatar
Petr:7.6.2018 7:17

Díky za reakce. Taky je mi divné, že by php7.2 neodladili dobře. Je tu otázka, v jakém prostředí php běží. Uvádím, že chyba (nejen ta jedna) se objevila v Linuxu Lite, která je teď nová (4.0). Celý projekt php běžící v prostředí LM17.3, převodem do LM18.3 bez problémů a spolehlivě funguje do Lite hned havaruje. Popisované vývojové změny v 7.2 nepoužívám. Lite má natvrdo instalaci konfigurace php7.2 z repozitářů Synaptic, takže je otázka, jak se dostanu ke knihovnám php7.2. Možná to právě proto ve Windows funguje, repozitáře jsou jiné.

Chybu jsem extrahoval do vzorového příkazu s poli proto, že s HTML to nemá nic společného. Příkaz v 18.3 je plně funkční a stabilní, v Lite je chybný. Probral jsem spoustu možností, krokování, plnou čerstvou instalaci na nový lokální disk a výsledek je nulový.

Píšu to kvůli tomu, že Mint chystá svou novou verzi a používá jiné repozitáře (ověřené). Tak snad to dopadne lépe, než u Linuxu Lite.

 
Nahoru Odpovědět 7.6.2018 7:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.6.2018 9:09

Jako, obvykle pouzivam taky tvoji konstrukci. Muzes to zkusit napsat takto, pokud je to problem tveho php

//$i['ii']=array('b'=>'bb','c'=>'cc','e'=>array('f'=>'ff'));
$x = array('f'=>'ff');
$i['ii'] = array('b'=>'bb', 'c'=>'cc', 'e'=>$x);
 
Nahoru Odpovědět 7.6.2018 9:09
Avatar
Petr
Člen
Avatar
Odpovídá na Peter Mlich
Petr:8.6.2018 7:05

Díky, ale nepomohlo to. Jediné zatím pro mne funkční řešení je použít funkci serialize(pole).
Je to ale zase komplikace s deserializací.

Mne by ale zajímalo, zda to někdo řešil v tom Linuxu Lite. Ne jen teoreticky odpovídat.

 
Nahoru Odpovědět 8.6.2018 7:05
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Petr
Mirek Slouka:12.6.2018 11:00

Ještě bych vyzkoušel modernější zápis pole, který je v PHP 7+.

$i = [];
$i['ii'] = ['b' => 'bb', 'c' => 'cc', 'e' => ['f' => 'ff']];
print_r($i);
Nahoru Odpovědět  +1 12.6.2018 11:00
I can explain it to you, but I can't understand it for you.
Avatar
Petr
Člen
Avatar
Odpovídá na Mirek Slouka
Petr:13.6.2018 20:52

Děkuji všem za pomoc.
Můj problém byl ve špatné deklaraci polí jako string, což dříve vyhovovalo. Dále v each->foreach.
Takže je už vše OK. Včetně nové verze Linux Mint19 (zatím beta), Taky je dobrá rada Mirka na zápis pole.
Děkuji.

 
Nahoru Odpovědět 13.6.2018 20:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.