Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Sorting - Fatal编程技术网

PHP数组[排序和分组]

PHP数组[排序和分组],php,arrays,sorting,Php,Arrays,Sorting,如何在PHP中使用条件对数组进行排序? 我希望数组按ID排序,然后在ID内按父ID排序,而不是在ID之后。 这样做的原因是将其实现到jQuery TreeGrid中 例如: Array ( [0] => Array ( [0] => 1 //ID [1] => TEST //Name [2] => 1 //Parent ID ) [1] => Array ( [0] =>

如何在PHP中使用条件对数组进行排序? 我希望数组按ID排序,然后在ID内按父ID排序,而不是在ID之后。 这样做的原因是将其实现到jQuery TreeGrid中

例如:

Array 
(
[0] => Array
    (
        [0] => 1 //ID
        [1] => TEST //Name
        [2] => 1 //Parent ID
    )
[1] => Array
    (
        [0] => 2 //ID
        [1] => TEST //Name
        [2] => 2 //Parent ID
    )
[2] => Array
    (
        [0] => 3 //ID
        [1] => TEST //Name
        [2] => 3 //Parent ID
    )
[3] => Array
    (
        [0] => 4 //ID
        [1] => TEST //Name
        [2] => 1 //Parent ID
    )
[4] => Array
    (
        [0] => 5 //ID
        [1] => TEST //Name
        [2] => 2 //Parent ID
    )
)
排序后,变成这样:

Array 
(
[0] => Array
    (
        [0] => 1 //ID
        [1] => TEST //Name
        [2] => 1 //Parent ID
    )
[1] => Array
    (
        [0] => 4 //ID
        [1] => TEST //Name
        [2] => 1 //Parent ID
    )
[2] => Array
    (
        [0] => 2 //ID
        [1] => TEST //Name
        [2] => 2 //Parent ID
    )
[3] => Array
    (
        [0] => 5 //ID
        [1] => TEST //Name
        [2] => 2 //Parent ID
    )
[4] => Array
    (
        [0] => 3 //ID
        [1] => TEST //Name
        [2] => 3 //Parent ID
    )
)
你可以用

您甚至可以使用
array\u orderby()
缩短上述示例:


使用此代码。它会起作用的

foreach ($data as $key => $row) {
    $id[$key] = $row[0];
    $parent_id[$key] = $row[2];
}

array_multisort($id,SORT_ASC,$parent_id,SORT_ASC,$data);

你试过什么?在发布之前,您是否先在此处搜索过SO?您正在从数据库中获取这些数据吗?@Sougata yea。。它来自数据库,那么为什么不在获取时对其进行排序呢?显示查询。使用此方法,它只能对ID进行排序,父ID在ID下排序,不在ID内。使用此方法,它只能对ID进行排序,父ID在ID下排序,不在ID内。。
$your_array = array_orderby ($your_array, 0, SORT_ASC, 2, SORT_ASC);
foreach ($data as $key => $row) {
    $id[$key] = $row[0];
    $parent_id[$key] = $row[2];
}

array_multisort($id,SORT_ASC,$parent_id,SORT_ASC,$data);