dshnx48866 2013-03-06 07:14
浏览 40
已采纳

从分层表创建一个平面数组

I have a table with id, parent_id and name fields,
a parent can have many child but child have only one parent.

On fetching, the array is look like

Array
(
[0] => Array
    (
        [id] => 1
        [parent_id] => 0
        [name]=>firstName
    )

[1] => Array
    (
        [id] => 2
        [parent_id] => 1
        [name]=>childFirstName
    )

[2] => Array
    (
        [id] => 3
        [parent_id] => 0
        [name]=>SecondName
    )

[3] => Array
    (
        [id] => 4
        [parent_id] => 3
        [name]=>childSecondName
    )


)

From this table , i want a flat array, which should be look like this..

//The key of array is the id of table row and the value corresponding to id is parent_name >name

Array
 ( 
   [1]=>[firstName],// [row_id]=>[name with parent]
   [2]=>[firstName>childFirstName],
   [3]=>[secondName],
   [4]=>[secondName>childSecondName]
 )
  • 写回答

2条回答 默认 最新

  • duanna5749 2013-03-06 07:37
    关注
    <?php
    
    $arr=array(
    array("id" => 1, "parent_id" => 0, "name"=>"firstName"),
    array("id" => 2, "parent_id" => 1, "name"=>"childFirstName"),
    array("id" => 3, "parent_id" => 0, "name"=>"SecondName"),
    array("id" => 4, "parent_id" => 3, "name"=>"childSecondName")
    );
    
    class test
    {
      var $arr=array();
    
      function get_name($id)
      {
         $str='';
         if(isset($this->arr[$id]))
         {
            $parent_id=$this->arr[$id]['parent_id'];
            if($parent_id!=0) $str=$this->get_name($parent_id).'>';
            $str.=$this->arr[$id]['name'];
         }
         return $str;
      }
    
      function convert($arr)
      {
         foreach($arr as $row)
         {
           $this->arr[$row['id']]=$row;
         }
    
         reset($this->arr);
         $res=array();
         foreach($this->arr as $id=>$row)
         {
           $res[$id]=$this->get_name($id);
         }
         return $res;
      }
    }
    
    $c=new test();
    $res=$c->convert($arr);
    print_r($res);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的