PHP分层数组-父级和子级

我将PHP和mySQL与Idiorm结合使用。那可能不相关。

  • 这是父母与子女之间的关系。
  • 0是根父级。
  • 示例:根父级0有孩子33,孩子33有孩子27,孩子27有孩子71。

如果需要解决此问题,可以更改此数组结构。

array (

33 =>

array (

0 => '27',

1 => '41',

),

27 =>

array (

0 => '64',

1 => '71',

),

0 =>

array (

0 => '28',

1 => '29',

2 => '33',

),

)

像这样,但作为一个数组…

  0 => 

28

29

33

27 =>

64

71

41

  • 深度未知,可以无限。我尝试了foreach,但可能不是这样。

  • 一些递归功能?
  • 一些while循环?

我尝试了以上两种,只是一团糟。这很聪明。

回答:

@deceze的建议奏效了。但是,输入数组需要更改一个参数,像这样…

$rows = array(

array(

'id' => 33,

'parent_id' => 0,

),

array(

'id' => 34,

'parent_id' => 0,

),

array(

'id' => 27,

'parent_id' => 33,

),

array(

'id' => 17,

'parent_id' => 27,

),

);

从https://stackoverflow.com/a/8587437/476:

function buildTree(array $elements, $parentId = 0) {

$branch = array();

foreach ($elements as $element) {

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

$children = buildTree($elements, $element['id']);

if ($children) {

$element['children'] = $children;

}

$branch[] = $element;

}

}

return $branch;

}

$tree = buildTree($rows);

print_r( $tree );

以上是 PHP分层数组-父级和子级 的全部内容, 来源链接: utcz.com/qa/424031.html

回到顶部