温馨提示×

如何使用PHP实现多维度的排名

PHP
小樊
82
2024-09-21 00:31:46
栏目: 编程语言

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

0