非递归的将经典无限层级关系的数组转换为树状分组

/**
     * 非递归的将经典无限层级关系的数组转换为树状分组
     * @param array  $rawArray
     * @param string $idKey  主键
     * @param string $pidKey  父级主键
     * @param string $subKey  层级键
     * @return array
     */
    function arrayToTree(array $rawArray, $idKey = 'id', $pidKey = 'parentId', $subKey = 'children')
    {
        $result = [];

        $rawArray = array_column($rawArray, null, $idKey);

        foreach ($rawArray as $item) {
           
            if (isset($rawArray[$item[$pidKey]])) {
                $rawArray[$item[$pidKey]][$subKey][] = &$rawArray[$item[$idKey]];
            } else {
                $result[] = &$rawArray[$item[$idKey]];
            }
        }

        return $result;
    }

猜你喜欢

转载自blog.csdn.net/weixin_45609681/article/details/104903848
今日推荐