使用具有排序键的另一个数组对数组进行排序

时间:2017-06-07 12:57:51

标签: php arrays sorting

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

1st Array。

$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
    )

2 个答案:

答案 0 :(得分:1)

您可以使用array_map

$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] => 
        )

)

现在,如果您希望密钥为0,1,2 ...,您可以在映射后使用array_values

$arr = array_values($arr);

输出:

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

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

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

)

答案 1 :(得分:0)

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

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

foreach($sort as $keyToFind) {
    foreach($chunk as $arrayElement) {
        if($arrayElement['id'] == $keyToFind)) {
            $sorted[$keyToFind] = $arrayElement;
        }
    }
}

正如你所看到的,由于这两个有着悠久性的前提,这有点时间和资源的消耗。我们希望你的阵列不是那么大