我正在使用这样的 json 数据:
matches = [
"league": {
"id":123,
"score": "score 1",
},
"league": {
"id": 7,
"score": "score 4",
},
"league": {
"id": 45,
"score": "score 3",
},
"league": {
"id": 34,
"score": "score 5"}
]
因此,我想使用键数组
`[7,45]
` 按特定联赛 ID 对数据进行排序,将数据放在列表的开头,其余部分按升序排列:
matches = [
"league": {
"id":7,
"score": "score 1",
},
"league": {
"id": 45,
"score": "score 4",
},
"league": {
"id": 34,
"score": "score 3",
},
"league": {
"id": 123,
"score": "score 5",
},
"league": {
"id": 344,
"score": "score 6",
},
请尝试此代码
$matches = [
["league" => ["id" => 123, "score" => "score 1"]],
["league" => ["id" => 7, "score" => "score 4"]],
["league" => ["id" => 45, "score" => "score 3"]],
["league" => ["id" => 34, "score" => "score 5"]],
["league" => ["id" => 344, "score" => "score 6"]]
];
$priority_ids = [7, 45];
usort($matches, function ($a, $b) use ($priority_ids) {
$idA = $a['league']['id'];
$idB = $b['league']['id'];
$posA = array_search($idA, $priority_ids);
$posB = array_search($idB, $priority_ids);
if ($posA !== false && $posB !== false) {
return $posA - $posB; // Sort by priority
} elseif ($posA !== false) {
return -1; // A has priority
} elseif ($posB !== false) {
return 1; // B has priority
} else {
return $idA - $idB; // Sort by id
}
});
print_r($matches);
usort
按优先级 $matches
对 id
进行排序。[7,45]
先来id