Algoritmus na roztřídění pole – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Algoritmus na roztřídění pole – PHP – Fórum – Programujte.comAlgoritmus na roztřídění pole – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Scrash0
Newbie
1. 4. 2014   #1
-
0
-

Ahoj,

Chtěl bych pomoct s algoritmem na přeorganizování dat v poli. Z XML feedu jem si natáhl jednotlivé kategorie produktů, nyní je mám v poli které vypadá takto:

$produkty = array(
        0 => array (
	    'První kategorie',
	    'První sub kategorie',
	    'První sub sub kategorie',
	),

        1 => array (
	    'První kategorie',
	    'První sub kategorie',
	    'Druhá sub sub kategorie',
        ),
        
        2 => array(
	    'Druhá kategorie'
        )
);

A potřeboval bych to přetřídit, aby to vypadalo takto: 

$produkty = array(
    'První kategorie' => array(
	'První sub kategorie' => array(
	    'První sub sub kategorie',
            'Druhá sub sub kategorie'

	),
    ),
	
    'Druhá kategorie' => array()
);

Jednoduše řečeno, chtěl bych, aby se mi to rozčlenilo pěkně podle kategorií a sub-kategorií atd.. Prostě když do indexu pole zadám jméno kategorie tak to vypíše všechny subkategorie, které jí náleží.. když zadám jméno kategorie a subkategorie, budu schopen zobrazit všechny sub-sub kategorie které jí náleží.

Nahlásit jako SPAM
IP: 93.99.186.–
Reklama
Reklama
Kit+11
Guru
1. 4. 2014   #2
-
0
-

#1 Scrash
Zkus to udělat přes XSLTProcessor. Nebudeš to muset převádět do pole, ale zpracuješ přímo XML.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Scrash0
Newbie
1. 4. 2014   #3
-
0
-

No, to by bylo na delší dobu, už toho mám hodně napsáno a nechce se mi to celé překopávat. Stačí mi dodělat poslední věc, jen je pro ní důležité takhle roztřídit to pole.

Ale samozřejmě díky za radu.

Edit:

A nevím, jestli by to bylo vůbec vhodné, jelikož ty kategorie v tom feedu jsou všechny v jednom atributu. jen oddělené svislítkem (či jak se tomu říká).

Nahlásit jako SPAM
IP: 93.99.186.–
Kit+11
Guru
1. 4. 2014   #4
-
0
-

#3 Scrash
Problém je v tom, že se mi nad takovou prkotinou nechce moc přemýšlet. XSLT by ti z toho udělalo rovnou HTML.

Edit: XSLT zvládne i svislítka.

Prostě v cyklu foreach budeš mít dvě proměnné, které budeš porovnávat s obsahem řádku. Když se bude lišit kategorie, přidáš další záznam do hlavního seznamu, jinak do poslední položky podseznamu.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Scrash0
Newbie
1. 4. 2014   #5
-
0
-

O XSLT teď slyším poprvé, takže se mi do toho moc nechce a taky se mi nechce moc přemýšlet   

Teď mě napadlo, že bych si to mohl vložit do pomocné tabulky v DB a pak si to jen pomocí dotazu vyfiltrovat a přeuložit přesně tam, kam potřebuju.

Nahlásit jako SPAM
IP: 93.99.186.–
nigaloslav0
Newbie
2. 4. 2014   #6
-
0
-

#5 Scrash
A co proste vzit nejaky standardni tridici algoritmus a trosku si ho upravit?...

Nahlásit jako SPAM
IP: 2001:1ab0:f15:0:8df7:86b5...–
peter
~ Anonymní uživatel
2551 příspěvků
8. 4. 2014   #7
-
0
-

http://cz1.php.net/manual/en/example.xml-map-tags.php
Ta funkce se dala napsat uz v tom parseru, ze jo. Tak ci tak si to budes muset napsat, viz KIT, porovnavat, jestli se polozka 0, 1, 2 rozvna stejne polozce v predchozim kroku a podle toho ji spravne zaradit.
Ale jestli z toho budes generovat menu, tak to menu rovnou generuj a neprepisuj pole do jineho :)
 

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Algoritmus — založil LuckaH

C++ algoritmus — založil silent

Algoritmus — založil RePRO

Algoritmus — založil Jirina.K

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý