Autor Zpráva
Acer1968
Profil
Dobrý den, pánové.
Ztratil jsem se opět. Našel jsem pár témat, které se foreach() týkají, koukal jsem se i do PHP manuálu, ale nedaří se mi to aplikovat na složitější pole, které se mi vrací z dotazu přes API (jinými slovy, nemám možnost upravit si to pole, abych na něj uměl vyrobit foreach().

Když si vydumpuju tu proměnnou, která má podle mne obsahovat to vrácené pole po zpracování pomocí funkce json_decode(), tak dostanu tohle:

array(2) { ["total"]=> string(3) "510" ["content"]=> array(2) { [0]=> array(11) { ["id"]=> int(153265290) ["trip_type_id"]=> int(1010) ["tour_operator_id"]=> int(10) ["date_from"]=> string(10) "2018-08-17" ["date_to"]=> string(10) "2018-08-24" ["duration"]=> int(8) ["price_current"]=> array(2) { ["value"]=> string(8) "18990.00" ["currency_id"]=> string(1) "1" } ["price_historical_max"]=> array(2) { ["value"]=> string(8) "24680.00" ["currency_id"]=> string(1) "1" } ["last_minute"]=> bool(true) ["transports"]=> array(2) { ["transport_id"]=> int(1) ["airport_id"]=> string(1) "1" } ["accommodation"]=> array(9) { ["id"]=> int(55480) ["type_id"]=> int(1) ["country_id"]=> int(227) ["destination_id"]=> int(1152) ["destinations"]=> array(3) { [0]=> array(3) { ["id"]=> string(3) "736" ["main"]=> string(1) "0" ["location"]=> string(1) "0" } [1]=> array(4) { ["id"]=> string(3) "715" ["parent_id"]=> string(3) "736" ["main"]=> string(1) "0" ["location"]=> string(1) "0" } [2]=> array(4) { ["id"]=> string(4) "1152" ["parent_id"]=> string(3) "715" ["main"]=> string(1) "0" ["location"]=> string(1) "1" } } ["rating"]=> string(3) "4.0" ["price_max"]=> array(2) { ["value"]=> string(8) "24680.00" ["currency_id"]=> string(1) "1" } ["name"]=> string(6) "Saphir" ["image"]=> string(32) "//i.ccdn.cz/acm/10/525849/m0.jpg" } } [1]=> array(12) { ["id"]=> int(128384028) ["trip_type_id"]=> int(1010) ["tour_operator_id"]=> int(240) ["boarding_id"]=> int(8) ["date_from"]=> string(10) "2018-08-17" ["date_to"]=> string(10) "2018-08-24" ["duration"]=> int(8) ["price_current"]=> array(2) { ["value"]=> string(8) "19575.00" ["currency_id"]=> string(1) "1" } ["price_historical_max"]=> array(2) { ["value"]=> string(8) "19575.00" ["currency_id"]=> string(1) "1" } ["last_minute"]=> bool(true) ["transports"]=> array(2) { ["transport_id"]=> int(1) ["airport_id"]=> string(1) "1" } ["accommodation"]=> array(8) { ["id"]=> int(55480) ["type_id"]=> int(1) ["country_id"]=> int(227) ["destination_id"]=> int(1152) ["destinations"]=> array(3) { [0]=> array(3) { ["id"]=> string(3) "736" ["main"]=> string(1) "0" ["location"]=> string(1) "0" } [1]=> array(4) { ["id"]=> string(3) "715" ["parent_id"]=> string(3) "736" ["main"]=> string(1) "0" ["location"]=> string(1) "0" } [2]=> array(4) { ["id"]=> string(4) "1152" ["parent_id"]=> string(3) "715" ["main"]=> string(1) "0" ["location"]=> string(1) "1" } } ["rating"]=> string(3) "4.0" ["name"]=> string(6) "Saphir" ["image"]=> string(32) "//i.ccdn.cz/acm/10/525849/m0.jpg" } } } }

No a já bych potřeboval udělat foreach() přes ty prvky content[0,1,2,3....] jestli mi rozumíte a vyzobnout si při každém průchodu pár hodnot, například ["date_from"].

Jenže když udělám:
foreach( $data->content as $datedetail )
končím chybou Invalid argument supplied for foreach() ...

Zkoušel jsem i foreach($data[1] as $datedetail) a další všechny možné konstrukce, ale očividně vůbec netuším, jak tomu foreach() podhodit ten content tak, aby ho vzal jako pole a neskončil chybou...

Prosím o radu
Petr
RastyAmateur
Profil
Acer1968:
Zkoušel jsi $data['content']?
Acer1968
Profil
RastyAmateur:Děkuju za tuhle radu. Ano, zkoušel, ale dávalo to špatné výsledky. Ale díky tomu, že to byl nápad někoho zkušenějšího, tak jsem věřil, že to bude dobře a tak jsem začal řešit, jestli není chyba někde jinde a byla. Takže v tuto chvíli jsem se posunul kousek dál a řeším už jiné problémy. Např. to, jak neplatit za každý dotaz přes API (je to placená služba), resp. jak si uchovat odpověď napříč různými návštěvníky stránky s nějakým rozumným časem expirace. Pomocí WordPress Transients ... Snad to nastuduju, když ne, jsem zpět :-)

Ještě jednou děkuju.
Petr

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:

0