我有一个$数组,其中的键如下:
Array
(
[1] => 462
[2] => 462
[3] => 462
[4] => 462
[5] => 19
[6] => 19
[7] => 19
[8] => 462
)
其中1,2,3,4,5,6,7,8是键,462462462,19,19,19462是值。我想为每个唯一的值获得最大键,因此,结果必须是一个数组,如:
Array
(
[7] => 19
[8] => 462
)
如何获得所有唯一$值的最大$key?我知道我可以用获得最大密钥和最大值
foreach ($array as $key => $value) {
$keys[] = $key;
$values[] = $value;
}
echo "max key is - ".max($keys);
echo "max value is - ".max($values);
但这并不是我所需要的。那么什么可以是孤独?
仅使用array_flip()
将首先将所有重复项减少为1个元素(数组不能有多个具有相同值的键(,因此。。。
$a = [1=>462,462,462,462,19,19,19,462];
print_r(array_flip($a));
给出
Array
(
[462] => 8
[19] => 7
)
您可以再次使用array_flip()
来交换密钥/值。。。
print_r(array_flip(array_flip($a)));
给予。。。
Array
(
[8] => 462
[7] => 19
)
Make一个数组$maxis
获取唯一值的键,并将它们存储为元素。
$array = [1=>462, 2=>462, 3=>462, 4=>462, 5=>19, 6=>19, 7=>19, 8=>462];
$maxis = [];
foreach ($array as $key => $value) {
$maxis[$value][] = $key;
}
/*
462: [1,2,3,4,8]
19: [5,6,7]
*/
在$maxis
上循环,并将$arr_keys
的最大值存储为关键字,将$key
存储为其值。
$res = [];
foreach ($maxis as $key=> $arr_keys) {
$res[max($arr_keys)] = $key;
}
print_r($res);
打印:
Array
(
[8] => 462
[7] => 19
)