【发布时间】:2013-09-25 19:02:02
【问题描述】:
我有以下数组。 parentId关键重要!
Array
(
[0] => Array
(
[id] => 1
[name] => Home
[parentId] =>
[children] =>
)
[1] => Array
(
[id] => 2
[name] => About
[parentId] =>
[children] =>
)
[2] => Array
(
[id] => 3
[name] => Services
[parentId] => 2
[children] =>
)
)
下面是我的expected 数组结果。你会看到Services 位于About 下,其id 为2,services parentId 为2
Array
(
[0] => Array
(
[id] => 1
[name] => Home
[parentId] =>
[children] =>
)
[1] => Array
(
[id] => 2
[name] => About
[parentId] =>
[children] => Array
(
[0] => Array
(
[id] => 3
[name] => Services
[parentId] => 2
[children] =>
)
)
)
)
我可以通过array_walk 或array_map 和foreach 轻松做到这一点。
我只是想知道是否有任何function 可以在没有foreach loop 的情况下加入像 SQL JOIN 这样的数组索引?
所以在我的数组中:id = parentId
【问题讨论】:
-
也许使用
array_merge_recursive使用用户定义的回调? -
@EliasVanOotegem 我认为这与 array_map 相同
-
@AlmaDoMundo:不完全是,因为它不是递归的......但你不能使用
array_map($array, 'array_merge_recursive', $someParam) -
@EliasVanOotegem 我的意思是您将使用 PHP 中的数组迭代(而 OP 希望避免这种情况)。好吧,几乎每个数组函数都遍历输入数组(只是在它的 C 实现中——即它对用户隐藏)——所以我不确定为什么它对 OP 如此重要。
-
@AlmaDoMundo:好吧,如果 OP 不想循环,他不应该编程 :-P I've seen another question like this,基本上:循环是不可避免的......(该评论是为了OP,显然)
标签: php arrays multidimensional-array