精華區beta PHP 關於我們 聯絡資訊
其實標題不知道怎麼下才好, 如果有人可以指導一下感激不盡 = = 以下是目前所遇到的問題, 假設目前有 3 個 array, $key_1_arr = array("a", b", "c", "d"); $key_2_arr = array("e", f", "g"); $key_3_arr = array("h", i", "j", "k", "l"); 想把它們轉成如下的新 array, $new_1_arr["a"]["b"]["c"]["d"] = 4; // 4 = count($key_1_arr) $new_2_arr["e"]["f"]["g"] = 3; $new_3_arr["h"]["i"]["j"]["k"]["l"] = 5; 不知道有沒有什麼方法可以達成呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.216.238
arrack:你不是已經寫出count了 02/07 13:28
blinkstar:應該是說目前只有 $key_x_arr,要把它們轉成 $new_x_arr 02/07 13:50
blinkstar:的那種格式 02/07 13:50
blinkstar:嗯…最後決定還是 eval 好了,比較快… 02/07 15:48
blinkstar:        用 02/07 15:51
richile0819:感覺是用遞迴.... 02/07 16:21
gpmm:老實說這個結構超違和 XDD 到底是什麼樣的應用啊? 02/07 16:31
blinkstar:在做資料統計用的 XD 02/07 18:34
> -------------------------------------------------------------------------- < 作者: gpmm (銀色) 看板: PHP 標題: Re: [請益] array values to ... 時間: Thu Feb 7 16:43:06 2013 ※ 引述《blinkstar (Lanrain)》之銘言: : 其實標題不知道怎麼下才好, : 如果有人可以指導一下感激不盡 = = : 以下是目前所遇到的問題, : 假設目前有 3 個 array, : $key_1_arr = array("a", b", "c", "d"); : $key_2_arr = array("e", f", "g"); : $key_3_arr = array("h", i", "j", "k", "l"); : 想把它們轉成如下的新 array, : $new_1_arr["a"]["b"]["c"]["d"] = 4; // 4 = count($key_1_arr) : $new_2_arr["e"]["f"]["g"] = 3; : $new_3_arr["h"]["i"]["j"]["k"]["l"] = 5; : 不知道有沒有什麼方法可以達成呢? 看 OAuth2 看得有點累…解一下 XD ※ 第一版 function func ($array) { $ret = Array (); $num = count ($array); $ref = & $ret; while ($ele = array_shift ($array)) { $ref = & $ref[$ele]; } $ref = $num; return $ret; } 沒有想很多所以 code 比較多一點 :P -- 併在一篇好了 ※ 難閱讀遞迴版本: function func ($arr, & $ret = Array (), $num = 0) { ($ele = array_shift ($arr)) ? func ($arr, $ret[$ele], ++$num) : $ret = $num; return $ret; } -- ※ 再接再厲,第三個版本: function func ($arr, $num = 0) { return ($ele = array_shift ($arr)) ? Array ($ele => func ($arr, ++$num)) : $num; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.180.95.43
CaptainH:XD 我正要po的說 板主捷足先登 02/07 16:59
※ 編輯: gpmm 來自: 175.180.95.43 (02/07 18:10)
blinkstar:耶嘿,成功了 XD 還一連出了三個版本 @@ 02/07 18:12
blinkstar:測試了一下,reference 版最快,v3 第2,v2 最慢 XD 02/07 18:13
gpmm:XDD 02/07 20:44
> -------------------------------------------------------------------------- < 作者: emn178 (小殘) 看板: PHP 標題: Re: [請益] array values to ... 時間: Thu Feb 7 20:38:23 2013 我的版本提供參考 function func($array) { $count = count($array); $new_arr = $count; while($count--) $new_arr = array($array[$count] => $new_arr); return $new_arr; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.105.211.107
gpmm:喔喔喔感覺這個速度會更快! 02/07 20:44