簡體   English   中英

對於 php 中的每個唯一 $value,從帶有鍵 ($key -> $value) 的數組中獲取最大 $key 值

[英]Get the maximum $key value from array with keys ($key -> $value) for every unique $value in php

我有一個帶有如下鍵的 $array:

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 是鍵,462,462,462,462,19,19,19,462 是值。 我想獲得每個唯一值的最大鍵,因此,結果必須是一個數組,如:

Array
    (
        [7] => 19
        [8] => 462
    )

如何獲得所有唯一 $value 的最大 $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
)

制作一個數組$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
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM