IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
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
Tvůrce
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
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
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.