Autor | Zpráva | ||
---|---|---|---|
xmark Profil |
#1 · Zasláno: 21. 1. 2011, 14:55:01 · Upravil/a: xmark
Doposud jsem se obešel jak bez zpracování xml, tak bez asociativních polí, teď jsem narazil na vhodnou příležitost to použít a nevím jak na to.
Mám xml, v něm je jednak seznam kategorií a potom seznam produktů, kde každý produkt má mj. přiřazenou jednu z kategorií. Moje představe je taková, že vytáhnu seznam kategorií do pole, pak projedu všechny produkty a při výpisu k nim přilepím název kategorie z onoho pole, vytažený podle klíče. Asi takto: $xml = simplexml_load_file("data.xml"); $kategorie = array(); foreach ($xml->Kategorie as $value){ echo $value->KategorieKod; // toto funguje array_push($kategorie, $value->KategorieKod, $value->KategorieNazev); // toto je špatně } foreach ($xml->Produkty->Produkt as $value){ echo $value->Nazev; // toto funguje echo $kategorie[$value->KatKod]; // toto nefunguje } echo na řádcích 5 a 10 vypisuje to co má, takže načtení proběhne v pořádku. array_push je tady použit špatně. Potřeboval bych do $kategorie přidat pár KategorieKod + KategorieNazev, ale nevím jak. Další věc bude řazení. Potřeboval bych výstup seřadit podle kategorií. Výrobky jsou tak seřazeny, ale nechci se na to spoléhat. |
||
Lamicz Profil |
#2 · Zasláno: 22. 1. 2011, 01:41:05 · Upravil/a: Lamicz
Já osobně používám SimpleXML pouze pro čtení, když mám zapisovat používám plný DOM ( + DOMXPath). SimpleXML má velmi omezenou práci s XML.
btw co udělá array_push($kategorie, (string) $value->KategorieKod, (string) $value->KategorieNazev); |
||
xmark Profil |
#3 · Zasláno: 22. 1. 2011, 02:00:36
Problém není se SimpleXML, v něm budu chtít jen vyřešit jen to řazení. A když to nepůjde, věřím, že to přehrkám jiným způsobem.
Jde mi hlavně o nějakou alternativu k array_push, která by uměla pracovat s asociativním polem. |
||
Alphard Profil |
#4 · Zasláno: 22. 1. 2011, 02:05:13 · Upravil/a: Alphard
|
||
xmark Profil |
#5 · Zasláno: 22. 1. 2011, 02:25:38
Lamicz:
Tohle zafungovalo, ale jinak, než bych chtěl. Nevytvořilo to pole 2 x N, ale 1 x N. prostě to nastrkalo za sebe na střídačku >KategorieKod a KategorieNazev. |
||
Alphard Profil |
#6 · Zasláno: 22. 1. 2011, 02:56:38 · Upravil/a: Alphard
xmark:
Promiň, chybně jsem pochopil, čeho chceš dosáhnout. Když se teď na to dívám znovu, zdá se mi, že array_push() není vůbec potřeba, nestačilo by prosté vytvoření pole klíč => hodnota? $xml = simplexml_load_file("data.xml"); $kategorie = array(); foreach ($xml->Kategorie as $value){ echo $value->KategorieKod; // toto funguje $kategorie[(string) $value->KategorieKod] = (string) $value->KategorieNazev; } foreach ($xml->Produkty->Produkt as $value){ echo $value->Nazev; // toto funguje echo $kategorie[(string) $value->KatKod]; } Nebo mi opět něco uniká? |
||
Časová prodleva: 5 dní
|
|||
xmark Profil |
#7 · Zasláno: 26. 1. 2011, 15:10:35
Alphard:
„Nebo mi opět něco uniká?“ Neuniká, funguje to přesně jak má, díky. Šel jsem an to zbytečně složitě, tušil jsem to. |
||
Časová prodleva: 13 let
|
0