Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从包含数字的变量中分离字符串_Php_Variables_Switch Statement_Case - Fatal编程技术网

Php 从包含数字的变量中分离字符串

Php 从包含数字的变量中分离字符串,php,variables,switch-statement,case,Php,Variables,Switch Statement,Case,我正在尝试隔离附加到只包含数字的变量的文本。我已经查过了,但我找不到任何有效的,甚至接近我正在尝试做的事情。以下是我想要的: $winning = max(array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four")); $winning = {the function that I'm missing} 我想找到与最大值变量相伴的字符串,然后在开关情况下使用它,例如: switch ($winning)

我正在尝试隔离附加到只包含数字的变量的文本。我已经查过了,但我找不到任何有效的,甚至接近我正在尝试做的事情。以下是我想要的:

$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.";
}
我尝试过使用一个不起作用的正则表达式解决方案,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.";
}
函数getMaxValue(数组$list){ $result=[]; foreach($k=>v){ 如果(!isset($result[“value”])| |$result[“value”]<$v){ $result=[ “值”=>v美元, “key”=>k美元, ]; } } 返回$result; } $WINING=[“变量一”=>$var1,“变量二”=>$var2,“变量三”=>$var3]; $WINING=getMaxValue($WINING); if(strpos($winning,'Var_One')!==false){ echo“Var_One目前以“$var1.”获胜!”; }else if(strpos($winning,'Var_Two')!==false){ echo“Var_Two目前以“$var2”获胜!”; }else if(strpos($winning,'Var_Three')!==false){ echo“Var_Three目前以“$var3”获胜!”; }否则{ 回声“领带”; }
我想您可能正在寻找这样的产品:

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

array(2) {
  ["value"]=>
  int(5)
  ["key"]=>
  string(5) "three"
}

因此,您正在查找的函数必须基于
$varX
变量返回数组的最大值?我不完全确定您为什么要这样做。为什么不把文本放在数组键中,把变量放在值中呢?那么你可能会避免整个问题。是的。max()对我来说工作正常,但我似乎无法隔离附加到varX变量的字符串。使用键和值的结果是它返回变量的值,而不是键的名称。在对脚本进行了一些调整后,我完成了这项工作,感谢您的帮助。
$list = ["one" => 2, "two" => 0, "three" => 5, "four" => 4];
var_dump(getMaxValue($list));
array(2) {
  ["value"]=>
  int(5)
  ["key"]=>
  string(5) "three"
}