2016-06-28 72 views
2

我想定義一個函數,給定一個關聯數組,將回顯鍵值對,給定該函數的參數。PHP關聯數組。獲取鍵值對使用foreach

到目前爲止,我的代碼如下所示。但是,該代碼的結果將是鍵值對的完整列表(表格)。我試圖得到的只是一對(一旦函數被調用)。

有人能幫助我嗎?

謝謝!

enter code here 

<!DOCTYPE html> 
<html> 
<head> 

<body> 

<h1>List of States</h1> 

<?php 

$states = array ("AL"=>"Alabama","AK"=>"Alaska","AZ"=>"Arizona","AR"=>"Arkansas","CA"=>"California","CO"=>"Colorado","CT"=>"Connecticut", 
"DE"=>"Delaware","FL"=>"Florida","GA"=>"Georgia","HI"=>"Hawaii","ID"=>"Idaho","IL"=>"Illinois","IN"=>"Indiana","IA"=>"Iowa","KS"=>"Kansas", 
"KY"=>"Kentucky"); 

function printState($Abbr) { 

    global $states; 

     echo "<table border=1>"; 

    foreach($states as $Abbr => $value) { 

     echo "<tr>"; 
     echo "<td>"; 
     echo $Abbr; 
     echo "</td>"; 
     echo "<td>"; 
     echo $value; 
     echo "</td>"; 
     echo "</tr>"; 

    } 

     echo "</table>"; 

} 

printState("CA"); 


?> 

</body> 
</html> 
+3

難道'回聲$狀態[$縮寫]'就足夠了? –

+0

因此,每次調用函數時只需打印一個鍵/值對,或者是否想要將該特定值傳遞給該函數的那個​​鍵? – Rizier123

+0

嘿。一旦函數被調用,我只想打印一對。意思是,如果我通過了「CA」這個關鍵字,我想要得到一個只有一行的表格,其中包括關鍵字(CA)和州名稱(加利福尼亞州)。 順便說一句,我嘗試回顯$ states [$ Abbr],但我得到完整的狀態列表。 –

回答

4

如果你必須有一個功能:

function getState($code) { 
    global $states; 
    if (array_key_exists($code, $states)) { 
     return $states[$code]; 
    } 
    return false; 
} 

echo getState('GA'); 

但作爲Dave Chen建議,$states[$abbr];是你會怎麼做。

+1

但是'in_array'檢查值是否存在值,'$ code'是數組的關鍵。我認爲它應該是'array_key_exists' –

+0

@Andrew完全正確,很好的地方! –

+0

是的,這工作得很好!非常感謝! –

0

嗨,您還可以使用此

function printState($Abbr) { 
    global $states; 
if (array_key_exists($Abbr,$states)){ 
    return "<table border=1><tr><td>$Abbr</td><td>$states[$Abbr]</td></tr></table>"; 
    } 
} 
echo printState("AK"); 
?>