转换MySQL表与多维数组的关系

时间:2016-03-24 12:25:04

标签: php mysql arrays multidimensional-array

我有一个菜单表:

id, slug, label, parent

父与id有关系,所以如果你有:

1, 'foo-bar', 'Foo Bar', NULL

这是一个根项目,而:

2, 'foo', 'Foo ', 1

属于' foo-bar'。然后,您可以拥有属于foo的商品,依此类推。

如何在PHP中将其转换为多维菜单数组?所以我可以这样做:

<?= $menu['foo-bar']['foo'] // echos 'Foo' ?>

我的要求与How to convert DB table with parent son relation to multi-dimensional array非常相似,但那里的答案并不奏效;它不是递归的。

1 个答案:

答案 0 :(得分:1)

以下是foreach(未经测试)可以做你想做的事情的例子。

<?php
// $results is your data from database
$menu = array();

foreach($results as $k => $result) {
  $key = $result['id'];  
  $parent = $result['parent'];
  if(!empty($parent)){
   array_push($menu[$parent]['parents'], $result);
  } else {
    unset($results[$k]['parent'];
    $menu[$key] = $result;
  }
}

var_dump($menu);