从包含数字php的变量中隔离字符串


isolate string from variable that contains numbers php

我正在尝试隔离附加到仅包含数字的变量的文本。我查了一下,找不到任何有效的,甚至接近我想要做的事情

$winning = max(array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four"));
$winning = {the function that I'm missing}

我想找到伴随最高值变量的字符串,然后在开关情况下使用它,例如:

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.";
}

我尝试过使用regex解决方案,但它不起作用,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.";
}

我想你可能正在寻找这样的东西:

function getMaxValue(array $list)
{
    $result = [];
    foreach ($list as $k => $v) {
        if (!isset($result["value"]) || $result["value"] < $v) {
            $result = [
                "value" => $v,
                "key" => $k,
            ];
        }
    }
    return $result;
}

测试:

$list = ["one" => 2, "two" => 0, "three" => 5, "four" => 4];
var_dump(getMaxValue($list));

结果:

array(2) {
  ["value"]=>
  int(5)
  ["key"]=>
  string(5) "three"
}
$winning = max(array_map("intval", array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four")));