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)
bor*_*ble 17
如果您只想要数组中的最大值,请使用max函数.这将返回最大值,但不是相应的键.它不会更改原始数组.
如果你关心你可以做的钥匙
$key = array_search(max($array), $array)
Run Code Online (Sandbox Code Playgroud)
(编辑包含@ binaryLV的建议)
您可以使用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)