2016-06-28 75 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"); 
?>