找到多个变量中最大的变量

时间:2015-11-23 10:39:08

标签: php multidimensional-array

我有四个变量$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除以各自的分数值。

4 个答案:

答案 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));

Phpfiddle Preview