php 数组增维,PHP数组到多维数组

我在php中有一个包含ID和parent_id的对象数组.

所有没有parent_id的对象都应该是新数组中的根对象.

所有确实具有parent_id的对象应被推入正确的对象的子代数组中:

这是我的原始数组:

array

0 =>

object(Node)[528]

protected 'id' => int 1

protected 'parent_id' => null

1 =>

object(Node)[529]

protected 'id' => int 2

protected 'parent_id' => null

2 =>

object(Node)[530]

protected 'id' => int 3

protected 'parent_id' => 1

3 =>

object(Node)[531]

protected 'id' => int 4

protected 'parent_id' => 1

4 =>

object(Node)[532]

protected 'id' => int 5

protected 'parent_id' => 4

5 =>

object(Node)[533]

protected 'id' => int 6

protected 'parent_id' => 4

这是新数组的外观:

$nodes = array(

array(

'id' => 1,

'parent_id' => null,

'children' => array(

array(

'id' => 3,

'parent_id' => 1,

'children' => null

),

array(

'id' => 4,

'parent_id' => 1,

'children' => array(

array(

'id' => 5,

'parent_id' => 4

),

array(

'id' => 6,

'parent_id' => 5

),

)

),

),

),

array(

'id' => 2,

'parent_id' => null,

'children' => null

),

);

知道我该怎么做吗?

解决方法:

尝试这样的事情:

// collects all nodes that belong to a certain parent id

function findChildren($nodeList, $parentId = null) {

$nodes = array();

foreach ($nodeList as $node) {

if ($node['parent_id'] == $parentId) {

$node['children'] = findChildren($nodeList, $node['id']);

$nodes[] = $node;

}

}

return $nodes;

}

像这样使用它:

$nestedNodes = findChildren($nodeList);

此代码以递归方式在原始$nodeList中搜索给定的parent_id.如果找到匹配的节点,它将搜索该节点的子节点,依此类推.如果找不到给定parent_id的子代,则重新调整一个空数组.

您可以通过使用$nodeList的引用来减少此方法的内存使用量.

标签:php,arrays,multidimensional-array

来源: https://codeday.me/bug/20191013/1904787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值