2014-11-04 79 views
0

我試圖將我附加到僅包含數字的變量的文本。我查了一下,找不到任何可行的或甚至接近我想要做的事情。下面是我在尋找:從包含數字的變量中分離字符串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."; 
} 

我試着使用正常的解決方案,不工作和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."; 
} 
+0

所以你正在尋找的函數必須返回基於'$ varX'變量的數組的最大值? – ojovirtual 2014-11-04 12:19:02

+1

我不完全確定你爲什麼要這樣做。爲什麼不把文本放在數組鍵和變量中?那麼你可能會避免這個問題。 – Erik 2014-11-04 12:25:01

+0

是的。 max()對我來說工作正常,但我似乎無法隔離我附加到varX變量的字符串。 – JustSomeGuy 2014-11-04 12:25:52

回答

0

我想你可能會尋找這樣的事情:

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

稍微調整我的腳本後,我做了這項工作,感謝您的幫助。 – JustSomeGuy 2014-11-04 13:30:38

0
$winning = max(array_map("intval", array($var1."Var_One", $var2."Var_Two", $var3."Var_Tree", $var4."Var_Four")));