首页 > 解决方案 > 如何对具有重复键和值的数组进行排序并分别显示所有键和值,包括php中数组的重复项?

问题描述

当我在 php.ini 中做空这个数组时,我在显示它们各自值的所有键时遇到问题。

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43", "Ben"=>"56");
ksort ($age);
foreach($age as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
}

我得到的结果是

Key=Ben, Value=56
Key=Joe, Value=43
Key=Peter, Value=35

结果应该是

Key=Ben, Value=37
Key=Ben, Value=56
Key=Joe, Value=43
Key=Peter, Value=35

标签: phparrayssortingduplicatesksort

解决方案


您不能有多个具有相同“名称”的键。

必须可以通过唯一键获取值。两次拥有相同的密钥会产生问题。

您可以改为使用带有子数组的数值数组来解决此问题:

[
 ['name' => 'Peter', 'age' => 35],
 ['name' => 'Ben', 'age' => 37],
 ['name' => 'Ben', 'age' => 56],
];

您的代码已调整:

$age = [
 ['name' => 'Peter', 'age' => 35],
 ['name' => 'Ben', 'age' => 37],
 ['name' => 'Ben', 'age' => 56],
 ['name' => 'Joe', 'age' => 43],
];

usort($age, function ($a, $b) {
    return $age['age'] - $b['age'];
});

foreach($age as $key => $person) {
    echo "Name=" . $person['name'] . ", Age=". $person['age'];
}

推荐阅读