Autor | Zpráva | ||
---|---|---|---|
martinvvv Profil * |
#1 · Zasláno: 14. 10. 2011, 14:42:22
Ahoj,
potřeboval bych poradit jak z víceúrovňového pole vytvořit jednoúrovňové pole. Hledal jsem na to přímo funkci a i napsat něco svého, ale bez spěchu. Předem díky za radu //Vstup Array ( [0] => Array ( [id] => 1 [name] => name1 [lower] => Array ( ) ) [1] => Array ( [id] => 2 [name] => name2 [lower] => Array ( [0] => Array ( [id] => 5 [name] => name5 [lower] => Array ( [0] => Array ( [id] => 10 [name] => name10 [lower] => Array ( ) ) ) ) ) ) ) //Optimální výstup Array ( [0] => Array ( [id] => 1 [name] => name1 ) [1] => Array ( [id] => 2 [name] => name2 [2] => Array ( [id] => 5 [name] => name5 [3] => Array ( [id] => 10 [name] => name10 ) ) |
||
Knight Profil |
#2 · Zasláno: 14. 10. 2011, 14:57:27 · Upravil/a: Knight
function vytvorJednourovnovePole($pole) { If (is_array($pole)) { foreach ($pole as $polozka) { $nove_pole[] = array("id" => $polozka['id'], "name" => $polozka['name']); If (is_array($polozka['lower']) && count($polozka['lower'])) { $pole_podpolozek = vytvorJednourovnovePole($polozka['lower']); If ($pole_podpolozek) { $nove_pole = array_merge($nove_pole, $pole_podpolozek); } } } return $nove_pole; } } |
||
Kcko Profil |
#3 · Zasláno: 14. 10. 2011, 15:02:55
OT: Jak udělat z toho výstupu od uživatele martinvvv klasické pole? Sem se Tim chtěl zaobírat, byl jsem líný si to pole napsat ručně a nejde mi z toho udělat klasické PHP pole.
|
||
Tasartir Profil |
#4 · Zasláno: 14. 10. 2011, 15:05:45 · Upravil/a: Tasartir
Kcko:
Taky jsem se tím začal zaobírat, ale bude půl čtvrté, je pátek, to bude nejvyšší čas jet domu, tak ti aspoň pošlu co jsem si vytvořil $array = array(); $array[] = array('id' => 1, 'name' => 'name1', 'lower' => array()); $array[] = array('id' => 2, 'name' => 'name2', 'lower' => array('id' => 5, 'name' => 'name5', 'lower' => array('id' => 10, 'name' => 'name10', 'lower' => array()))); |
||
Knight Profil |
#5 · Zasláno: 14. 10. 2011, 15:07:10
Kcko:
Blbě, na to by se musela použít fce var_export, tenhle dump je schválně udělaný, aby se lépe četl pro člověka. |
||
Kcko Profil |
#6 · Zasláno: 14. 10. 2011, 15:10:22 · Upravil/a: Kcko
Tasartir:
Díky :-), já to vědět nechci (nejsem autorem topicu) a tu funkci bych si napsal samozřejmě sám (kdybych autorem byl). Ptal jsem se na něco jiného. Knight: To samozřejmě vím :))), zkouším to prohnat Eval-em ale asi dělám něco blbě, stále mi na to nejde přistupovat jako na pole. |
||
Knight Profil |
#7 · Zasláno: 14. 10. 2011, 15:16:21 · Upravil/a: Knight
Kcko:
Aby fungoval eval, tak to musí být ve tvaru správné definice pole, tzn. nahradit hranaté závorky, obalit stringy a přidat čárky mezi hodnoty. Na to si můžeš napsat nějaký regexp. :) Takže ve výsledku vznikne tohle: $pole = Array ( 0 => Array ( 'id' => 1, 'name' => "name1", 'lower' => Array ( ) ), 1 => Array ( 'id' => 2, 'name' => "name2", 'lower' => Array ( '0' => Array ( 'id' => 5, 'name' => "name5", 'lower' => Array ( '0' => Array ( 'id' => 10, 'name' => "name10", 'lower' => Array ( ) ) ) ) ) ) ); |
||
Kcko Profil |
#8 · Zasláno: 14. 10. 2011, 15:18:45
Knight:
Jasně :-) a ještě uvařím zakladateli topicu kafe a vyžehlím noviny ;-) |
||
Knight Profil |
#9 · Zasláno: 14. 10. 2011, 15:30:35
Kcko:
Díky, tenhle komentář mi rozjasnil den. :) |
||
Časová prodleva: 13 let
|
0