Как написать код который распределяет массивы?
Вот как-то так.function rebuild(array $array) {
    $count_children = [];
    $without_children = [];

    foreach ($array as $id => $element) {
        // инициализация подсчета дочерних элементов, если это еще не было сделано
        if (!isset($count_children[$id])) {
            $count_children[$id] = 0;
        }

        if ($count_children[$id] === 0) {
            $without_children[] = $id;
        }

        if ($element['pos'] === 0) {
            continue;
        }

        // инкремент кол-ва дочерних элементов для родительского эл-та
        if ( !isset($count_children[$element['pos']]) ) {
            $count_children[$element['pos']] = 0;
        }
        $count_children[$element['pos']]++;

        // удаление родительского эл-та из списка "бездочерних" элементов
        if (($key = array_search($element['pos'], $without_children)) !== false) {
            unset($without_children[$key]);
        }
    }

    while(!empty($without_children)) {
        foreach ($without_children as $key => $id) {
            $parent_id = $array[$id]['pos'];

            if ($parent_id !== 0) {
                if (!isset($array[ $parent_id ]['playlist'])) {
                    $array[ $parent_id ]['playlist'] = [];
                }
                $array[$parent_id]['playlist'][] = $array[$id];

                unset($array[$id]);

                $count_children[$parent_id]--;
                if ($count_children[$parent_id] <= 0 && $parent_id !== 0) {
                    $without_children[] = $parent_id;
                }
            }
            unset($without_children[$key]);
        }
    }

    return $array;
}
Интересно. для чего?