PHP hierarchical array - Parents and childs

前端 未结 5 1986
不思量自难忘°
不思量自难忘° 2020-11-28 08:09

I use PHP and mySQL with Idiorm. That might not be relevant.

My PHP array

  • It\'s a relationship between parents and childs.
  • 0
5条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-28 08:57

    I added to @Jens Törnell's answers to enable defining the options for the column name of parent_id, the children array key name, and also the column name for id.

    /**
     * function buildTree
     * @param array $elements
     * @param array $options['parent_id_column_name', 'children_key_name', 'id_column_name'] 
     * @param int $parentId
     * @return array
     */
    function buildTree(array $elements, $options = [
        'parent_id_column_name' => 'parent_id',
        'children_key_name' => 'children',
        'id_column_name' => 'id'], $parentId = 0)
        {
        $branch = array();
        foreach ($elements as $element) {
            if ($element[$options['parent_id_column_name']] == $parentId) {
                $children = buildTree($elements, $options, $element[$options['id_column_name']]);
                if ($children) {
                    $element[$options['children_key_name']] = $children;
                }
                $branch[] = $element;
            }
        }
        return $branch;
    }
    

    Since the functionality is quite universal, I managed to use the above function in most of my projects.

提交回复
热议问题