douyonglang4845 2010-11-24 17:43
浏览 16
已采纳

如何基于主键和外键输出数组

Considering this array

Array
(
[0] => Array
    (
        [id] => 51
        [category_id] => 37
        [title] => Sims
    )

[1] => Array
    (
        [id] => 37
        [category_id] => 26
        [title] => Blackberry
    )

[2] => Array
    (
        [id] => 26
        [category_id] => 0
        [title] => Mobile Device
    )

I would like to be able to print out:

Mobile Device > Blackberry > Sims

Based on the relationship between category_id and id.

  • 写回答

4条回答 默认 最新

  • dongzhaoshi8497 2010-11-24 18:02
    关注
    <?php
    
    $array = Array(
        array('id' => 51, 'category_id' => 37, 'title' => 'Sims'),
        array('id' => 37, 'category_id' => 26, 'title' => 'Blackberry'),
        array('id' => 26, 'category_id' => 0, 'title' => 'Mobile Device'));
    
    // First build an associative array ID->Object
    $map = array();
    foreach( $array as $value )
    {
      $map[$value['id']] = $value;
    }
    
    // Then build your path
    $path = array();
    $value = $array[0];
    while( true )
    {
        $path[] = $value['title'];
        if( $value['category_id'] == 0 )
        {
            break;
        }
        $value = $map[$value['category_id']];
        if( !isset($value) )
        {
            die("Data Inconsistency");
        }
    }
    
    
    // Display path
    echo implode(array_reverse($path), ' > ');
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误