Autor Zpráva
Petr-K
Profil *
Ahoj, neočekával bych, že sem budu psát takovýto problém, ale jsem z něj docela paf.

Mám načtený xml soubor:
[/pre]$xml_parsed = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
Vytvořil jsem si pole z dat z DB:
foreach($discount_data as $object) {
$discount[$object['id_discount']] = $object['customers'];
}
Testovací obsah pole je následující:
Array
(
[192] => 29
[326] => 76
)
Nyní procházím načtený XML soubor a porovnávám s výše uvedeným polem:
foreach($xml_parsed as $tag) {
if(in_array($tag->CATEGORY, $tmp_categories)){
if($discount[$tag->ID] <> $tag->CUSTOMERS){
...
}
}
}[pre]

Když v cyklu zadám ručně $discount[192], vypíše se správně hodnota 29.
Vypíšu-li samotnou proměnou $tag->ID, vypíše se 192.
Ale pokud proměnou z pole $discount chci vypsat takto $discount[$tag->ID] je prázdná. Proč?

Díky
P.
juriad
Profil
Petr-K:
Udělej
var_dump($tag->ID)
a budeš se divit, on to totiž není ani string ani číslo. Musíš jej na string explicitně přetypovat:
$discount[(string)$tag->ID]
Alphard
Profil
Zkusil bych explicitně přetypovat na číslo. Když místo klasického echo použijete při výpisu var_dump(), zjistíte, že $tag->ID je objekt.

Po [#2] to odesílám jen pro to, že já bych přetypovával na číslo :-) (pokud teda není důvod domnívat se, že tam budou nečísla).
Petr-K
Profil *
Ano, budou tam jen čísla.
A podruhé ano, je to objekt. Přetypování pomohlo, děkuji.

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: