繁体   English   中英

根据另一个数组的值对数组进行排序

[英]Order array based on another array's values

我目前正在尝试根据另一个数组的值订购一个数组。 这些值是唯一的。 我看到了一些有关如何根据另一个数组的键对数组进行排序的示例,但我似乎找不到一个可以根据另一个数组的值对数组进行特定排序的数组。 这两个数组具有相同的值。 一个数组具有一个附加的键id 我该如何实现?

数组遵循顺序:

Array
(
[0] => Array
    (
        [src] => 2GK2VWE-ax--0
    )

[1] => Array
    (
        [src] => 13KXEXyJaM9-0
    )

[2] => Array
    (
        [src] => 138XELryjM9-0
    )
)   

要订购的阵列:

Array
(
[0] => Array
    (
        [src] => 13KXEXyJaM9-0
        [id] => 123468
    )
[1] => Array
    (
        [src] => 138XELryjM9-0
        [id] => 15784239
    )

[2] => Array
    (
        [src] => 2GK2VWE-ax--0
        [id] => 12558456
    )
)

所需订单:

Array
(
    [0] => Array
    (
        [src] => 2GK2VWE-ax--0
        [id] => 12558456
    )

[1] => Array
    (
        [src] => 13KXEXyJaM9-0
        [id] => 123468
    )

[2] => Array
    (
        [src] => 138XELryjM9-0
        [id] => 15784239
    )
)

您无需对数组进行排序。 只需从“按顺序排列的数组”中搜索src,然后将ID添加到原始数组中即可。

$originalArray = [
    [
        'src' => '2GK2VWE-ax--0'
    ],
    [
        'src' => '13KXEXyJaM9-0'
    ],
    [
        'src' => '138XELryjM9-0'
    ]
];

$sortedArray = [
    [
        'src' => '13KXEXyJaM9-0',
        'id' => 123468
    ],
    [
        'src' => '138XELryjM9-0',
        'id' => 15784239
    ],
    [
        'src' => '2GK2VWE-ax--0',
        'id' => 12558456
    ]
];

$src = array_column($originalArray, 'src');
foreach ($sortedArray as $data) {
    if (false !== $key = array_search($data['src'], $src)) {
        $originalArray[$key]['id'] = $data['id'];
    }
}

var_dump($originalArray);

输出:

array(3) {
  [0]=>
  array(2) {
    ["src"]=>
    string(13) "2GK2VWE-ax--0"
    ["id"]=>
    int(12558456)
  }
  [1]=>
  array(2) {
    ["src"]=>
    string(13) "13KXEXyJaM9-0"
    ["id"]=>
    int(123468)
  }
  [2]=>
  array(2) {
    ["src"]=>
    string(13) "138XELryjM9-0"
    ["id"]=>
    int(15784239)
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM