2012-06-12 137 views
2

問題返回鍵:校驗值,並使用PHP

我有一個是在$記錄集,例如1.69的值。然後我有一個包含不同等級和值的數組。我想先比較$記錄與最高值,然後查看它是高於還是等於,如果不是低於它的值,則等等。

PHP代碼:

$record1 = '1.69'; 
$record2 = '2.90'; 
$record3 = '3.40'; 
$record4 = '3.80'; 

陣列($年級):

Array 
(
    [G] => 2.8 
    [VG] => 3.8 
) 

場景:

$ RECORD1應該是比較中的最高值數組,這將返回false。它將與低於最高值的值相比較,這也將返回錯誤。如果兩者都返回false,則返回字符串'U',否則返回鍵G或VG。

  • 記錄1應產生U.
  • 記錄2應產生G.
  • 記錄3應產生G.
  • 記錄4應產生VG。

問:

我可以做很多if語句作爲一個解決方案,但我不知道是否有這樣做的檢查以更好的方式中的任何巧妙的方式?

+0

有多少個記錄變量? –

+1

+1用於明確定義問題。你有能力創建一個'$ record'數組而不是獨立變量嗎? –

+0

總是隻有1 $記錄變量。 – kexxcream

回答

1

使用簡單的邏輯:

$grades = array('G' => 2.8, 'VG' => 3.8); 
$records = array(1.69, 2.9, 3.4, 3.8); 

foreach ($records as $v) { 
    $res = ($v < $grades['G'] ? 'U' : ($v < $grades['VG'] ? 'G' : 'VG')); 
    echo "$v = $res\n"; 
} 

/* 
1.69 = U 
2.9 = G 
3.4 = G 
3.8 = VG 
*/ 
1

我會寫一個循環遍歷$grades數組的函數,設置結果的值並在值大於輸入時立即中斷。

像這樣(未測試):

function returnGrade($record, $grades) 
{ 
    $return = 'U'; 
    foreach ($grades as $key => $value) 
    { 
    if ($record >= $value) 
    { 
     $return = $key; 
    } 
    else 
    { 
     break; 
    } 
    } 
    return $return; 
} 
1

首先,嘗試和降序對數組進行排序。

然後,在while循環中,檢查初始數組元素(使用key()函數)是大於還是小於FALSE,使用next()函數移動到下一個元素並進行比較。

當您所需的比較返回TRUE時,循環應該結束。

0

您可以通過記錄數做這樣

第一旋轉環和檢查值在數組或不受此功能in_array()

如果結果發現,然後通過這個功能獲得關鍵array_search("value_to_search","array_variable");

希望這將有助於你