作者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
1F:→ CaptainH:XD 我正要po的说 板主捷足先登 02/07 16:59
※ 编辑: gpmm 来自: 175.180.95.43 (02/07 18:10)
2F:推 blinkstar:耶嘿,成功了 XD 还一连出了三个版本 @@ 02/07 18:12
3F:→ blinkstar:测试了一下,reference 版最快,v3 第2,v2 最慢 XD 02/07 18:13
4F:→ gpmm:XDD 02/07 20:44
5F:→ gpmm:原 po 揪甘心ㄟ 02/07 23:15