簡體   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