doumao1047 2014-01-06 19:22
浏览 36
已采纳

将2D阵列转换为1D

This might seem obvious, but I have the following recursive function:

public static function dependencies($from_id) {
    $core = Core::getInstance();
    $query = $core->pdo->prepare("SELECT access_code FROM dependencies WHERE hierarchy=:id");
    $query->bindValue(":id",$from_id);
    $query->execute();
    while($data = $query->fetch()) {
        $codes[$data['access_code']] = self::dependencies($data['access_code']);
    }

    return $codes;

}

The output of this result:

Array
(
    [12] => 
    [17] => Array
        (
            [101] => 
            [104] => 
        )

    [18] => 
)

These values will always be unique and would like to transform this result into a single, one-dimensional array. What would be the most efficient way of doing this?

example: $array = array(12,17,101,104,18);

  • 写回答

2条回答 默认 最新

  • dousui7410 2014-01-06 19:36
    关注

    Try recursive approach:

    $codes = array(12 => '', 17 => Array( 101 => '', 104 => ''), 18 => '');
    $res = flat_array_keys($codes);
    echo '<pre>',print_r($res),'</pre>';
    /* result is
    Array
    (
        [0] => 12
        [1] => 17
        [2] => 101
        [3] => 104
        [4] => 18
    )*/
    
    function flat_array_keys($arr) {
        $result = array();
    
        foreach ($arr as $k => $v) {
            $result[] = $k;
            if (is_array($v))
                $result = array_merge($result, flat_array_keys($v));
        }
    
        return $result;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟