要使用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个人的信息,包括姓名、年龄和城市。我们指定排序维度为年龄和城市。运行此代码后,我们将得到一个根据年龄和城市排序的新数组。