Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将数组更改为一维_Php_Arrays - Fatal编程技术网

PHP将数组更改为一维

PHP将数组更改为一维,php,arrays,Php,Arrays,生成数组格式的函数: function buildTree(array $elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']);

生成数组格式的函数:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

$tree = buildTree($rows);
 Array
    (
        [0] => Array
            (
                [TASK_ID] => 2
                [PARENT_TASKID] => 0
                [TASK_LEVEL] => 0
                [children] => Array
                    (
                        [0] => Array
                            (
                                [TASK_ID] => 9
                                [PARENT_TASKID] => 2
                                [TASK_LEVEL] => 1
                            )

                        [1] => Array
                            (
                                [TASK_ID] => 10
                                [PARENT_TASKID] => 2
                                [TASK_LEVEL] => 1
                            )

                    )

            )

[1] => Array
        (
            [TASK_ID] => 1
            [PARENT_TASKID] => 0
            [TASK_LEVEL] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [TASK_ID] => 4
                            [PARENT_TASKID] => 1
                            [TASK_LEVEL] => 1
                        )

                    [1] => Array
                        (
                            [TASK_ID] => 5
                            [PARENT_TASKID] => 1
                            [TASK_LEVEL] => 1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [TASK_ID] => 6
                                            [PARENT_TASKID] => 5
                                            [TASK_LEVEL] => 2
                                        )

                                )

                        )

                )

        )
    )
生成的数组:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

$tree = buildTree($rows);
 Array
    (
        [0] => Array
            (
                [TASK_ID] => 2
                [PARENT_TASKID] => 0
                [TASK_LEVEL] => 0
                [children] => Array
                    (
                        [0] => Array
                            (
                                [TASK_ID] => 9
                                [PARENT_TASKID] => 2
                                [TASK_LEVEL] => 1
                            )

                        [1] => Array
                            (
                                [TASK_ID] => 10
                                [PARENT_TASKID] => 2
                                [TASK_LEVEL] => 1
                            )

                    )

            )

[1] => Array
        (
            [TASK_ID] => 1
            [PARENT_TASKID] => 0
            [TASK_LEVEL] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [TASK_ID] => 4
                            [PARENT_TASKID] => 1
                            [TASK_LEVEL] => 1
                        )

                    [1] => Array
                        (
                            [TASK_ID] => 5
                            [PARENT_TASKID] => 1
                            [TASK_LEVEL] => 1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [TASK_ID] => 6
                                            [PARENT_TASKID] => 5
                                            [TASK_LEVEL] => 2
                                        )

                                )

                        )

                )

        )
    )
如何将上述格式更改为以下格式:

Array
(
    [0] => Array
        (
            [TASK_ID] => 2
            [PARENT_TASKID] => 0
        )

    [1] => Array
        (
            [TASK_ID] => 9
            [PARENT_TASKID] => 2
        )

    [2] => Array
        (
            [TASK_ID] => 10
            [PARENT_TASKID] => 2
        )

)
请输入以下代码:

$flat = call_user_func_array('array_merge', $array);

$array=您的阵列
$result=call_user_func_数组('array_merge',$array);
回声“;
打印(结果);
但似乎不起作用。请帮忙

谢谢。


<?php
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
尝试输出:

function multi_array($array)
{
    $new = array();
    foreach($array as $key=>$elem)
    {
        if(is_array($elem))
        {
            foreach($elem as $x=>$val)
            {
                if(!is_array($val))
                {
                    $new[$x][$key] = $val;
                }
            }
        }
    }
    return $new;
}


希望,它对您有用。

在捕获多个文件时,我一直在使用它解析$\u文件

function makeOneDimensionArray(array $array, &$res = array())
{
    foreach($array as $arr)
    {
        $res[] = array(
            'TASK_ID' => $arr['TASK_ID'],
            'PARENT_TASKID' => $arr['PARENT_TASKID']
        );
        if(isset($arr['children']))
        {
            makeOneDimensionArray($arr['children'], $res);
        }

    }

    return $res;

}

$finalArr = makeOneDimensionArray($array);

print_r($finalArr);
用法非常基本

function flattenTree($tree)
{
    $flat = array();
    foreach ($tree as $item) {
        if (array_key_exists('children', $item)) {
            $children = $item['children'];
            unset($item['children']);
            $flat[] = $item;
            $flat = array_merge($flat, flattenTree($children));
        } else {
            $flat[] = $item;
        }
    }
    return $flat;
}

$flat = flattenTree($tree);
我希望它有助于

尝试以下代码:


我希望它能有所帮助。

您应该使用递归函数来展平树,就像您使用递归函数来构建树一样


你自己尝试过什么吗?你是如何生成数组的?您必须向我们提供更多信息以帮助您。还有你自己尝试过什么?请查看有问题的更新尝试这个为什么不投票?必须有向下投票的原因。输出->
Array([0]=>Array([TASK\u ID]=>2)[1]=>Array([PARENT\u TASK ID]=>0))
添加阵列的var\u dump,以便我可以运行。
预期或现有阵列的var\u dump
?输出与预期不符。代码与预期接近。但我怀疑是否有两个任务的父任务ID=0将首先排序,然后再排序子任务。请查看问题中生成的数组。@slimshaddyyy:只需将array\u merge语句放入foreach循环中即可。查看我的编辑。输出是相同的,即使它是内部foreach。请看我的问题和生成的数组。它有两条父任务ID为0的记录。
function flattenTree($tree)
{
    $flat = array();
    foreach ($tree as $item) {
        if (array_key_exists('children', $item)) {
            $children = $item['children'];
            unset($item['children']);
            $flat[] = $item;
            $flat = array_merge($flat, flattenTree($children));
        } else {
            $flat[] = $item;
        }
    }
    return $flat;
}

$flat = flattenTree($tree);