要使用PHP實現多維度的排名,你可以創建一個函數,該函數接受一個多維數組作為輸入,并返回一個根據指定維度排序的數組。以下是一個示例實現:
<?php
function rankMultiDimensionalArray($array, $dimensions) {
// 對輸入數組的每個元素進行排序
usort($array, function ($a, $b) use ($dimensions) {
foreach ($dimensions as $dimension) {
$aValue = array_key_first($a[$dimension]);
$bValue = array_key_first($b[$dimension]);
if ($aValue != $bValue) {
return ($aValue < $bValue) ? -1 : 1;
}
}
return 0;
});
return $array;
}
// 示例輸入數組
$data = [
['name' => 'Alice', 'age' => 30, 'city' => 'New York'],
['name' => 'Bob', 'age' => 25, 'city' => 'San Francisco'],
['name' => 'Charlie', 'age' => 30, 'city' => 'Los Angeles'],
['name' => 'David', 'age' => 28, 'city' => 'San Francisco'],
];
// 指定排序維度
$dimensions = ['age', 'city'];
// 對數組進行排序
$rankedData = rankMultiDimensionalArray($data, $dimensions);
// 輸出排序后的數組
print_r($rankedData);
?>
在這個示例中,我們定義了一個名為rankMultiDimensionalArray
的函數,它接受一個多維數組$array
和一個維度數組$dimensions
作為參數。我們使用usort
函數對數組進行排序,根據$dimensions
指定的維度進行比較。
在示例輸入數組中,我們有4個人的信息,包括姓名、年齡和城市。我們指定排序維度為年齡和城市。運行此代碼后,我們將得到一個根據年齡和城市排序的新數組。