【问题标题】:isolate string from variable that contains numbers php从包含数字php的变量中分离字符串
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 稍微调整了我的脚本后,我完成了这项工作,感谢您的帮助。
【解决方案2】:
$winning = max(array_map("intval", array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four")));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2016-06-13
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多