简体   繁体   English

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

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

I am currently trying to order an array based on the value of another array. 我目前正在尝试根据另一个数组的值订购一个数组。 The values are unique. 这些值是唯一的。 I seen examples of how to order an array based on the keys of another array but I cant seem to find one that specifically orders an array by the value of another array. 我看到了一些有关如何根据另一个数组的键对数组进行排序的示例,但我似乎找不到一个可以根据另一个数组的值对数组进行特定排序的数组。 Both arrays have the same values. 这两个数组具有相同的值。 One array has an additional key id . 一个数组具有一个附加的键id How could I achieve that? 我该如何实现?

Array to follow order: 数组遵循顺序:

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

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

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

Array to order: 要订购的阵列:

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

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

Desired order: 所需订单:

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

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

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

You don't need to sort the array. 您无需对数组进行排序。 Just search the src from the "Array to order" and add the id in the original array. 只需从“按顺序排列的数组”中搜索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);

Output: 输出:

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