【发布时间】:2014-11-04 12:12:15
【问题描述】:
我正在尝试隔离已附加到仅包含数字的变量的文本。我已经查过了,我找不到任何有效的东西,或者甚至接近我正在尝试做的事情。这就是我要找的东西:
$winning = max(array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four"));
$winning = {the function that I'm missing}
我想找到最高值变量附带的字符串,然后在switch case中使用,例如:
switch ($winning) {
case "Var_One":
echo "This variable is the highest value.";
break;
case "Var_Two":
echo "This variable is the highest value.";
break;
case "Var_Three":
echo "This variable is the highest value.";
break;
default:
echo "Values are tied.";
}
我尝试使用一个不起作用的正则表达式解决方案,而 strpos 不能满足我的需要。
感谢任何帮助。
回答:
function getMaxValue(array $list) {
$result = [];
foreach($list as $k => $v) {
if(!isset($result["value"]) || $result["value"] < $v) {
$result = [
"value" => $v,
"key" => $k,
];
}
}
return $result;
}
$winning = ["Var_One" => $var1, "Var_Two" => $var2, "Var_Three" => $var3];
$winning = getMaxValue($winning);
if(strpos($winning,'Var_One') !== false) {
echo "Var_One is currently winning by ".$var1."!";
} else if(strpos($winning,'Var_Two') !== false) {
echo "Var_Two is currently winning by ".$var2."!";
} else if(strpos($winning,'Var_Three') !== false) {
echo "Var_Three is currently winning by ".$var3."!";
} else {
echo "Tie.";
}
【问题讨论】:
-
所以你要找的函数必须根据
$varXvariables返回数组的最大值? -
我不完全确定您为什么要这样做。为什么不将文本放在数组键中,将变量放在值中?你可能会避免这整个问题。
-
是的。 max() 对我来说工作正常,但我似乎无法隔离我附加到 varX 变量的字符串。
-
使用key和value的结果是返回变量的值而不是key的名字。
标签: php variables switch-statement case