我有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)};
更新了代码,了解如何从数组中访问原始变量