2011-12-09 87 views

回答

3

這甚至負值工作:

$a = 100; 
$b = 200; 
$c = -300; 
$max = max($a,$b,$c); 
foreach(array('a','b','c') as $v) { 
    if ($$v == $max) { 
     echo "\$$v is $max and therefore the largest"; 
     break; 
    } 
} 

輸出:

$b is 200 and therefore the largest 
+0

+1尼斯...可能略微劫持了這個問題..我試圖回答這個問題,並試圖使它儘可能動態 - 是否有可能使用變量'$ a'並將其名稱(即a)作爲字符串而不是使用'array('a','b','c')'?希望有道理? – ManseUK

+0

@ManseUK:看看文檔http://php.net/get_defined_vars,但AFAK它並不總是工作http://stackoverflow.com/questions/255312/how-to-get-a-variable-名稱作爲一個字符串在PHP – Toto

+0

將盡快嘗試。謝謝 :-) – michaelmcgurk

1
$a = 100; 
$b = 200; 
$c = 300; 
$max = "a" 
foreach(array("a","b","c") as $v){ 
if($$v > $$max)$max = $v; 
} 
echo "$max is $$max"; 
+0

從'$ max ='行(第4行)錯過';',輸出是'c是$ c' - > http://codepad.org/d5LMDpOl – ManseUK

+0

謝謝。我只是剛剛嘗試,並會回報:) – michaelmcgurk

+0

只是爲了確認,這是否意味着我可以在我的輸出中使用$ a和$ b? – michaelmcgurk

0

嘗試這個

$arr=array("a"=>100,"b"=>200,"c"=>300); 

$val = max($arr); 

print_r(array_keys($arr, $val));echo "has maximum value ".$val; 
+1

該OP沒有一個關聯數組.... – ManseUK

0
$a = 100; 
$b = 200; 
$c = 300; 

$values = compact('a', 'b', 'c'); 
arsort($values); 

echo '$' . key($values) . ' is ' . current($values) . ' and therefore the largest'; 

我喜歡這個解決方案,因爲它非常整潔;絕對美學上一個很好的解決方案。不知道它將如何針對大量變量的其他解決方案執行。

我肯定會推薦你嘗試獲取初始值到一個數組而不是單獨的變量開始。

相關問題