我有四个变量$a
,$b
,$c
和$d
。它们每个都有一个分配给它们的整数值。我需要找到具有最高值的变量(不是值本身)。这就是我试过的:
// $a, $b, $c, $d are initialized with values here
$highest_value = max($a,$b,$c,$d);
if($a==$highest_value){$biggest_variable = 'a'};
if($b==$highest_value){$biggest_variable = 'b'};
if($c==$highest_value){$biggest_variable = 'c'};
if($d==$highest_value){$biggest_variable = 'd'};
虽然效率不高,却完成了工作。但如果任何变量的值相等,这就会变得平缓。这个看似简单的问题令我难过!有没有比手动比较每个变量更简单的解决方案来检查是否相同?
编辑:好的,排序的原因是得分。每个变量构成一个团队。分数计算如下:
Winning Team = 1,000,000 / Value , Other Teams = 200,000 / Value
因此a
= 10并且3,4,5
的值为b,c,d
,其中a的分数为1,000,000 / 10
,其余为200,000
除以各自的分数值。
答案 0 :(得分:3)
您可以创建一个可用于查找名称的数组。然后像以前一样使用max()
创建的数组,并使名称使用array_keys()
,例如。
<?php
$a = 4;
$b = 7;
$c = 2;
$d = 1;
$arr = ["a" => $a, "b" => $b, "c" => $c, "d" => $d];
print_r(array_keys($arr, max($arr)));
?>
输出:
Array(
[0] => b
)
答案 1 :(得分:1)
您可以使用compact创建关联数组,使用array_search来获取密钥。
<dependency>
<groupId>org.renjin</groupId>
<artifactId>renjin-script-engine</artifactId>
<version>0.7.0-RC7</version>
</dependency>
<dependency>
<groupId>org.renjin.cran</groupId>
<artifactId>forecast</artifactId>
<version>4.04-SNAPSHOT</version>
</dependency>
正如其他人所指出的,如果你有相同的最大值,这只会给你第一个变量。
答案 2 :(得分:0)
您可以创建一个可用于查找名称的数组。然后只需将asort()
与创建的数组一起使用,并使用array_keys()
和end()
来获取名称,例如
<?php
// Defining a function
function getHighest($values = array())
{
// Sorting the array
asort($values);
// Get the sorted array keys
$keys = array_keys($values);
// Return the last key
return end($keys);
}
// Define array with values from $a, $b, $c and $d
$array = array(
'a' => $a,
'b' => $b,
'c' => $c,
'd' => $d,
);
// Pass array to getHighest()
$highest = getHighest($array);
?>
答案 3 :(得分:0)
试试这个
$array = array
(
'a' => 10,
'b' => 20,
'c' => 15,
'd' => 5
);
echo $highest_value = max($array);
print_r(array_keys($array,$highest_value));