使用PHP将2d数组转换为3d [英] Convert 2d array into 3d with PHP

查看:66
本文介绍了使用PHP将2d数组转换为3d的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一些像这样的树的简单二维数组:

There are simple 2d array with some sort of tree like this:


  • node1

    • node2

      • node3

      它的结构是:

      array(
          array (
            'id' : 1,
            'pid': 0,
            'title' : 'node1',
            'level' : 1
          ),
          array (
            'id' : 2,
            'pid': 1,
            'title' : 'node2',
            'level' : 2
          ),
          array (
            'id' : 3,
            'pid': 2,
            'title' : 'node3',
            'level' : 3
          ),
      )
      

      是否有PHP解决方案将此数组转换为:

      Is there solutions with PHP to convert this array into:

      array(
          array (
            'id' : 1,
            'title' : 'node1',
            'child' :  array (
                         'id' : 2,
                         'title' : 'node2',
                         'child' :  array (
                                       'id' : 3,
                                       'title' : 'node3',
                                    ),
                       ),
      
          )
       ...
      )
      


      推荐答案

      发现@SO PHP遍历函数可将单个数组转换为嵌套带有孩子的数组-基于父级ID

      $inArray = array(
          array('ID' => '1', 'parentcat_ID' => '0'),
          array('ID' => '2', 'parentcat_ID' => '0'),
          array('ID' => '6', 'parentcat_ID' => '1'),  
          array('ID' => '7', 'parentcat_ID' => '1'),
          array('ID' => '8', 'parentcat_ID' => '6'),          
          array('ID' => '9', 'parentcat_ID' => '1'),  
          array('ID' => '13', 'parentcat_ID' => '7'),
          array('ID' => '14', 'parentcat_ID' => '8'),     
      );
      
      function makeParentChildRelations(&$inArray, &$outArray, $currentParentId = 0) {
          if(!is_array($inArray)) {
              return;
          }
      
          if(!is_array($outArray)) {
              return;
          }
      
          foreach($inArray as $key => $tuple) {
              if($tuple['parentcat_ID'] == $currentParentId) {
                  $tuple['children'] = array();
                  makeParentChildRelations($inArray, $tuple['children'], $tuple['ID']);
                  $outArray[] = $tuple;   
              }
          }
      }
      
      $outArray = array();
      makeParentChildRelations($inArray, $outArray);
      
      print_r($outArray);
      

      这篇关于使用PHP将2d数组转换为3d的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆