Seřazení multi-dimensionálního pole

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Wailey
Člen | 48
+
-3
-

Ahoj,

prosím Vás, nevíte někdo, jak setřídit takto složené pole?

array (3)
	"ID_1" => array (2)
		group => "Název skupiny" (39)
		item => array (7)
			"2006 - 2011" => array (3)
			"2000 - 2011" => array (12)
			"2003 - 2011" => array (3)
			"2000 - 2006" => array (3)
			"2000 - 2004" => array (6)
			"2005 - 2009" => array (1)
			"2000 - 2010" => array (3)
	"ID_5" => array (2)
		group => "Název skupiny 2" (29)
		item => array (5)
			"2000 - 2006" => array (2)
			"2004 - 2008" => array (4)
			"1998 - 2005" => array (2)
			"2005 - 2009" => array (2)
			"2000 - 2010" => array (2)
	"ID_7" => array (2)

podle hodnoty v array[][„group“] a podle roku v year array[][„item“][„year“][]

Předem moc díky

Editoval Wailey (24. 6. 2015 15:50)

Azathoth
Člen | 495
+
+1
-

hm, já bych to asi řešil usortem a napsal bych si vlastní porovnávací funkci, která bude 2 prvky pole porovnávat nejdřív podle group a pak podle year…

Wailey
Člen | 48
+
0
-

Vyřešeno!

		foreach ($products as &$val) {
    $sortarray[] = $val['group']; //vytvoření pole pro seřazení v multisort
    krsort($val['item'], SORT_STRING); //seřazení podle klíče [rok] DESC podle stringu
}
array_multisort($sortarray,$products,SORT_DESC); //seřazení

Díky za nakopnutí :)

Editoval Wailey (24. 6. 2015 16:34)

Wailey
Člen | 48
+
0
-

Jelikož dostávám na svoji strukturu pole čím dál více Dis, chtěl bych vědět proč a v čem je problém?
Vím, že cpát do klíče v asociativním poli dlouhý řetězec navíc s mezery a není nejlepší nápad, a celkově dělat více než více rozměrné pole také ne.

Jak tedy můžu jinak vykreslit seřazení produktů v tomto formátu podskupin

  • group
    • year
      • items

z presenteru to posílám do latte přes jednu proměnnou a tam to řeším přes vnořené foreach a doba vykreslení je minimální, budu rád za jakýkoliv feedback. Moc díky

Jan Mikeš
Člen | 771
+
+2
-

Neni problem ve strukture pole ale v tom, ze razeni pole jsou zaklady PHP, ktere nemaji prakticky nic spolecneho s Nette

Azathoth
Člen | 495
+
+2
-

A to znamená, že ho pošleme do háje?
A nemůžeš si to vytahat už seřazené z databáze nějakým jedním, složitější dotazem místo plácání se s poli?

Editoval Azathoth (24. 6. 2015 23:14)

Šaman
Člen | 2666
+
0
-

Však do háje ho nikdo neposlal, jenom pár lidí dislajklo jeho otázku, kterou by bylo vhodnější položit na jiné fórum.