PHP:以递归方式填充数组

时间:2016-06-30 05:10:49

标签: php mysql

我有一个看起来像这样的MySQL表

-------------------------
field   |   parent_field
------------------------
model   |   series
height  |   series
height  |   model
length  |   model
length  |   height

表格是这样的结构,因此每个字段可以有多个parent_field

用户首先选择系列,然后我需要获取所有需要更改的字段。

例如,我需要一个包含

的表
$fields = array(
     'model' => [
         'name' => 'model'
      ],  

      'height' => [
         'name' => 'height'
      ],   

      'length' => [
         'name' => 'length'
      ]
);

所以,虽然 length 没有parent_field 系列,但 height 又有系列parent_field

我的逻辑如下

private function loadFields($parent) {
   $children = array();
   $children = $this->loadChildren();

   foreach($children as $child) {
      $data[$child->field][] = array(
         'name' => $child->field, 
          .
          .
          .        
      );
   }
}

函数loadChildren()就是这样做的,它执行SELECT DISTINCT并返回给定父级的子级。

但是,我需要继续为当前的孩子装载孩子。

我被困住,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您可以使用GROUP_CONCAT

直接使用SQL查询来实现它
SELECT field, GROUP_CONCAT(parent_field SEPARATOR ',') as parent_fields
FROM mytable GROUP BY field

解析行,您可以将parent_fields爆炸,然后获取所需的子数组,包含所有父值。