使用PHP获取具有第二低/最小值的变量的名称

时间:2017-06-21 19:42:21

标签: php

我有4个变量,每个变量都分配了一个整数。请问有什么人可以告诉我如何获得具有第二小值的变量的名称?

感谢。

4 个答案:

答案 0 :(得分:0)

除非你有一种命名变量的结构化方法,例如prefix_x,否则没有真正的方法。

推荐的方法是使用这样的数组:

$array = array(
  "a" => 3,
  "b" => 2,
  "c" => 1,
  "d" => 6
);


// Sort the array descending but keep the keys.
// http://php.net/manual/en/function.asort.php.
asort($array);

// Fetch the keys and get the second item (index 1).
// This is the key you are looking for per your question.
$second_key = array_keys($array)[1];

// Dumping the result to show it's the second lowest value.
var_dump($array[$second_key]); // int(2).

为了更符合您的问题,您可以像这样创建数组。

$array = array();
$array['variable_one'] = $variable_one;
$array['some_random_var'] = $some_random_var;
$array['foo'] = $foo;
$array['bar']= $bar;

// Same code as above here.

答案 1 :(得分:0)

首先,您需要在数组中包含所有变量。你可以这样做:

$array = array(
 'a' => 3,
 'b' => 6,
 'c' => 2,
 'd' => 1
);

或者这样:

$array['a'] = 3;
$array['b'] = 6;
// etc

然后,您需要使用natsort()对Items进行排序,以获得自然的排序。

natsort($array);

然后使用值翻转数组键(如果您想要值,请跳过此行)

$array = array_flip($array);

之后,使用next();

跳转到数组中的下一个项目(位置1)
echo next($array);

总计一个很短的脚本:

$array = array(
 'a' => 3,
 'b' => 6,
 'c' => 2,
 'd' => 1
);

natsort($array);
$array = array_flip($array);
echo next($array);

答案 2 :(得分:0)

您可以使用数组来存储这些值,而不是将4个变量用于4个整数值。对数组进行排序并打印数组的第二个索引,即1。

<?php

    $x = array(2,3,1,6);

    $i = 0, $j = 0, $temp = 0;

    for($i = 0; $i < 4; $i++){

        for($j=0; $j < 4 - $i; j++){

            if($x[$j] > $x[$j+1]){

                $temp = $x[$j];

                $x[$j] = $x[$j+1];

                $x[$j+1] = $temp;
            }
        }
    }

    for($j = 0; $j < 4; $j++){
        echo $x[$j];
    }

    echo $x[1];

?>

答案 3 :(得分:0)

使用compact将变量设置为一个数组,对数组进行排序,然后使用数组切片获取第二个值 然后可选择回显第二个值的键。

$a = 2;
$b = 7;
$c = 6;
$d = 1;

$arr = compact('a', 'b', 'c', 'd');

asort($arr);
$second = array_slice($arr,1,1);
Echo "variable name " . Key($second) ."\n";

Echo "value " . ${key($second)};

https://3v4l.org/SVdCq

更新了代码,了解如何从数组中访问原始变量