从带有键的数组中获取 php 中每个唯一$value的最大$key值 ($key -> $value)

  • 本文关键字:key value 唯一 数组 获取 php php
  • 更新时间 :
  • 英文 :


我有一个$数组,其中的键如下:

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
)

最新更新