如何对具有重复键和值的数组进行排序,并在php中分别显示所有键和值,包括数组中的重复项?

如何对具有重复键和值的数组进行排序,并在php中分别显示所有键和值,包括数组中的重复项?,php,arrays,sorting,duplicates,ksort,Php,Arrays,Sorting,Duplicates,Ksort,当我在php中缩短这个数组时,我遇到了一个显示所有键各自值的问题 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43", "Ben"=>"56"); ksort ($age); foreach($age as $x => $x_value) { ec

当我在php中缩短这个数组时,我遇到了一个显示所有键各自值的问题

$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

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

必须能够通过唯一键获取值。使用同一个键两次会出现问题

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

[
 ['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'];
}

你能为此写完整的代码吗?我对php没有太多经验。我已经更新了我的答案,@LovekushNiranjan。我还没有测试过。但是它使用usort()函数按子数组中的值进行排序。我想按键而不是按值对数组进行排序,@xyzimple将usort中使用的数组键从
return$age['age']-$b['age']更改
to
returnstrcmp($a[“name”],$b[“name”])在此“return strcmp($a[“name”],$b[“name”]);“@xyz”之后获得相同的结果