Autor Zpráva
farradox
Profil
Zdravím, asi řeším prkotinu, ale není mi jasné jak dostanu hodnoty z pole. Podle dokumentace mi server pošle array v této podobě:

array output
{
int id
string id_interni
int typ
int status
}

Pole dostanu, ale nevím jak vykuchat ty hodnoty. Není mi totiž úplně jasná ta struktura... Měl by to být "seznam" objektů, kde bude jeho i a další stavy. Předem díky za odpověď
Joker
Profil
farradox:
není mi jasné jak dostanu hodnoty z pole
Přes hranaté závorky a index.
$pole["id"] = 5;
$id = $pole["id"]; // $id bude 5

Je tohle ten problém?
MCKAY
Profil
farradox:
Pokud máš s nějakým polem problém, používá se dost často funkce print_r(); nebo var_dump();, které ti vypíší strukturu toho pole. Takže na příkladu:

<?php $array = array(1=>"Text_jedna", "text_dve");print_r($array);?>


Ti vypíše celou strukturu:

Array ( [1] => Text_jedna [2] => text_dve )


Kde hodnota v hranatých závorkách je index, a to za šipkou je hodnota. Takže index jedna má přiřazen řetězec "Text_jedna" a index dvě má "text_dve", pokud zobrazit hodnoty tak si vypises $array["jmeno_nebo_cislo_indexu"];
farradox
Profil
To je dobré. Dneska jsem opět objevil svět :)
Array ( [0] => Array ( [advert_id] => 1975638534 [rkid] => 001 [advert_type] => 4 [user_status] => 2 ) ..........)

Teďka předpokládám, že použiju foreach na hlavní strukturu:
foreach ($list as $key ){
// $key my vypisuje hodnoty Array ( [0,1,2,3,4,5,6,7,8,9..] =>Array(
}
A kam mám teď dosadit $key, aby jsem dostal ty další hodnoty?
MCKAY
Profil
farradox:
Není to úplně jasně položená otázka, dávej také kód mezi , je to přehlednější a lépe se pomáhá.

Teorie toho
foreach
u je ta, že procházíš pole uložené v $list, jako proměnná $key, tedy ti to vypíše všechny položky, problém je, jestli to je třeba pole v poli, nebo tak, to by si musel ještě jinak.
farradox
Profil
Ano, to je přesně to co potřebuji "pole v poli". Omlouvám se za nepřesné vyjádření.

Předpokládám, že musím použít 2x foreach , ale nevím v jaké proměnné je uložená struktura toho "druhého" pole
MCKAY
Profil
farradox:
Jeden by měl stačit, nejprve si zjisti, ve kterém indexu prvního pole je umístěno to pole druhé, potom ve foreachu bude proměnná ve které je to pole v poli $list["index_kde_je_dalsi_pole"];
farradox
Profil
Tak uz jsem na to přišel:
foreach ($list[output] as $key => $pole){        
          foreach ($list[output][$key] as $key2 => $pole2){
                                
                            }                                  
                    }


Nebo napevno pokud znám název hodnoty
$list[output][$key][id]
;
Hrozně moc mi pomohla funkce
print_r()


Děkuji moc :)
Nox
Profil
farradox:
jinak kolem klíčů dej uvozovky -> $list["output"], jsou to řetězce a spoléhat se na implicitní konverzi na řetězec není dobré

třeba i proto že kdybys náhodou někde vytvořil konstantu output, tak najednou by tento skript přestal fungovat nebo by dělal něco jiného
nightfish
Profil
farradox:
dá se zapsat také jako
foreach ($list[output] as $key => $pole){        
  foreach ($list[output][$key] as $key2 => $pole2){
    // a tady pracovat s $pole2['id'] atd.                              
  }                                  
}
farradox
Profil
jj,ale varianta s jedním foreach budu na zpracování určitě rychlejší. Je výhoda, že znám názvy těch hodnot. Díky :)

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: