php - 如何转换' tree-array'数组

时间:2017-07-10 09:17:50

标签: php

我已经得到了tree-array

enter image description here

现在我想将它转换为这样的数组:

array(
      1 => array('id'=>'1','parentid'=>0),
      2 => array('id'=>'2','parentid'=>0),
      3 => array('id'=>'3','parentid'=>1),
      4 => array('id'=>'4','parentid'=>1),
      5 => array('id'=>'5','parentid'=>2),
      6 => array('id'=>'6','parentid'=>3),
      7 => array('id'=>'7','parentid'=>3)
      );

我已经编写了类似的内容:

private function _getOrderData($datas)
{
    $_data = [];
    static $i = 0;
    foreach ($datas as $data) {
        $i++;
        $rows = ['id' => $data['id'], 'pid' => isset($data['children']) ? $data['id'] : 0, 'menu_order' => $i];
        if(isset($data['children'])) {
            $this->_getOrderData($data['children']);
        }
        $_data[] = $rows;
    }
    return $_data;
}

但它没有工作

惊魂~~

如何修复代码以获取阵列?感谢〜

顺便说一句,我的英语是游泳池。

我不知道你能否阅读我对这个问题的描述。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,Thx~

private function _getOrderData($datas, $parentid = 0)
{
    $array = [];
    foreach ($datas as $val) {
        $indata = array("id" => $val["id"], "parentid" => $parentid);
        $array[] = $indata;
        if (isset($val["children"])) {
            $children = $this->_getOrderData($val["children"], $val["id"]);
            if ($children) {
                $array = array_merge($array, $children);
            }
        }
    }
    return $array;
}

数组看起来像: array