Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Petr
Člen
Avatar
Petr:6. června 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. června 21:38
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Petr
Petr Čech:6. června 23:42

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

Editováno 6. června 23:42
Nahoru Odpovědět  +3 6. června 23:42
the cake is a lie
Avatar
Odpovídá na Petr
Martin Štěpánek :6. června 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. června 23:56
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Petr
Člen
Avatar
Petr:7. června 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. června 7:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. června 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. června 9:09
Avatar
Petr
Člen
Avatar
Odpovídá na Peter Mlich
Petr:8. června 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. června 7:05
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Petr
Mirek Slouka:12. června 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. června 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. června 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. června 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.