2011-09-30 23 views
2

無論如何要做一個PHP函數?看起來第二組變量會殺死我嘗試寫入的任何函數。php函數根據變量設置顏色

$flow = (15); 
    $low = (10); 
    $good =(20); 
    $high =(30); 


if ($flow <= $low) 
    $class = "tdy"; 
else if (($flow > $low) && ($flow <= $good)) 
    $class = "tdg"; 
else if ($flow >= $high) 
    $class = "tdr"; 

我試着用這個函數做一個函數,但它只是失敗的高變量。 單獨的if else語句與變量一起運行良好。如果我可以重置變量並在每個實例上使用函數調用if else語句,那將節省大量時間。

+0

你有答案嗎? –

回答

1

我覺得你的邏輯可以更簡單:

function getColor($flow, $low, $good) { 
    if ($flow <= $low) 
     return "tdy"; 

    if ($flow <= $good) 
     return "tdg"; 

    return "tdr"; 
} 

由於在第一否則如果第二次檢查($流> $低)是無用的,因爲如果那是真的,第一個如果被執行。當然,如果第一個如果沒有被執行,唯一的選擇是最後一個,如果這使得它無效檢查。

+0

完美!謝謝。對我來說簡單易懂。我會爲此投票,但沒有權限。 – grantiago

+0

很高興我能幫到你。 –

0
function getColor($flow, $low, $good, $high) { 
    if ($flow <= $low) 
     return "tdy"; 
    else if (($flow > $low) && ($flow <= $good)) 
     return "tdg"; 
    else if ($flow >= $high) 
     return "tdr"; 
} 
+0

認爲它可以做得更簡單。 –

0
<?php 
$def = array(10=>'tdy',20=>'tdg',30=>'tdr'); 

foreach(array(9,10,11,19,20,21,29,30,31) as $i) { 
    printf("%02d %s\n", $i, foo($i, $def)); 
} 

function foo($val, $sel) { 
    foreach($sel as $k=>$v) { 
     if ($val<=$k) { 
      return $v; 
     } 
    } 
    return end($sel); 
} 

打印

09 tdy 
10 tdy 
11 tdg 
19 tdg 
20 tdg 
21 tdr 
29 tdr 
30 tdr 
31 tdr