Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

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,如何使用第二个数组对第一个数组进行排序,第二个数组在第二个数组中有已排序的键,而不使用任何循环 第一阵列 $chunk = array( [0] => Array ( [id] => 212 [order] => 1 [title] => fdfdfdfdf

如何使用第二个数组对第一个数组进行排序,第二个数组在第二个数组中有已排序的键,而不使用任何循环

第一阵列

$chunk = array(
                [0] => Array
                    (
                        [id] => 212
                        [order] => 1
                        [title] => fdfdfdfdf
                    )

                [1] => Array
                    (
                        [id] => 5
                        [order] => 2
                        [title] => 
                    )

                [2] => Array
                    (
                        [id] => 781
                        [order] => 3
                        [title] => 
                    )
            )
第二个数组,具有第一个数组的已排序键

$sort = array
    (
        [2] => 2
        [0] => 0
        [1] => 1
    )

当然,这没有任何功能。你必须做类似的事情

<?php
$chunk  = [
    // data
];
$sorted = [];
$sort   = [
    // ordered keys
];

foreach($sort as $keyToFind) {
    foreach($chunk as $arrayElement) {
        if($arrayElement['id'] == $keyToFind)) {
            $sorted[$keyToFind] = $arrayElement;
        }
    }
}
正如你所见,这是一个有点时间和资源消耗,因为两个叠瓦的前额。希望您的阵列不是那么大

您可以使用它:

$arr = array_map(function($val) use($chunk){
    return $chunk[$val];
}, $sort);
这是输出:

Array
(
    [2] => Array
        (
            [id] => 781
            [order] => 3
            [title] => 
        )

    [0] => Array
        (
            [id] => 212
            [order] => 1
            [title] => fdfdfdfdf
        )

    [1] => Array
        (
            [id] => 5
            [order] => 2
            [title] => 
        )

)
Array
(
    [0] => Array
        (
            [id] => 781
            [order] => 3
            [title] => 
        )

    [1] => Array
        (
            [id] => 212
            [order] => 1
            [title] => fdfdfdfdf
        )

    [2] => Array
        (
            [id] => 5
            [order] => 2
            [title] => 
        )

)
现在,如果希望键为0,1,2…,可以在映射后使用:

$arr = array_values($arr);
以及输出:

Array
(
    [2] => Array
        (
            [id] => 781
            [order] => 3
            [title] => 
        )

    [0] => Array
        (
            [id] => 212
            [order] => 1
            [title] => fdfdfdfdf
        )

    [1] => Array
        (
            [id] => 5
            [order] => 2
            [title] => 
        )

)
Array
(
    [0] => Array
        (
            [id] => 781
            [order] => 3
            [title] => 
        )

    [1] => Array
        (
            [id] => 212
            [order] => 1
            [title] => fdfdfdfdf
        )

    [2] => Array
        (
            [id] => 5
            [order] => 2
            [title] => 
        )

)

你想要什么样的输出。尽可能为你的问题提供更多细节。你是如何获得第二个阵列的?也许此时您已经可以对第一个数组进行排序了。您可以使用,如下所示:。如果是这样的话,那么可能是dup?:谢谢,这就是我想要的。请解释一下use关键字的匿名函数在做什么。@amitsigh array\u map为给定数组中的每个元素调用回调。那在文件里。现在,使用部分在那里,因为我们在一个函数中,它是一个不同的范围,所以从技术上讲,我们不能访问外部变量。当我们添加use时,给定的变量就可以访问了。