PHP从Array获得最高价值

Jam*_*ain 46 php arrays sorting

我试图抓住数组中的最大值,同时仍然保留项目标签.我知道我可以通过运行sort()来做到这一点,但是如果我这样做,我就会丢失标签 - 这使得它对我需要的东西毫无意义.这是阵列:

array("a"=>1,"b"=>2,"c"=>4,"d"=>5);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Kar*_*ath 134

不要对数组进行排序以获得最大值.

获取最大值:

$value = max($array);
Run Code Online (Sandbox Code Playgroud)

获取相应的密钥:

$key = array_search($value, $array);
Run Code Online (Sandbox Code Playgroud)

  • 如果两个键的最大值相同,则max($ array)将不起作用。 (3认同)

bor*_*ble 17

如果您只想要数组中的最大值,请使用max函数.这将返回最大值,但不是相应的键.它不会更改原始数组.

如果你关心你可以做的钥匙

$key = array_search(max($array), $array)
Run Code Online (Sandbox Code Playgroud)

(编辑包含@ binaryLV的建议)


Jac*_*cob 5

您正在寻找asort()


bin*_*yLV 5

您可以使用max()来获取最大值,但它只会返回一个值,而没有相应的数组索引。然后,您可以使用array_search()来查找相应的键。

$array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5);
$maxValue = max($array);
$maxIndex = array_search(max($array), $array);
var_dump($maxValue, $maxIndex);
Run Code Online (Sandbox Code Playgroud)

输出:

int 5
string 'd' (length=1)
Run Code Online (Sandbox Code Playgroud)

如果有多个元素具有相同的值,则必须循环遍历数组才能获取所有键。

在不了解问题的情况下很难提出好的建议。你为什么需要它?输入是什么,期望的输出是什么?


小智 5

$a = array(10, 20, 52, 105, 56, 89, 96);
$b = 0;
foreach ($a as $key=>$val) {
    if ($val > $b) {
        $b = $val;
    }
}
echo $b;
Run Code Online (Sandbox Code Playgroud)