2014-02-06 105 views
0

我试图很简单地使用in_array()来检查数组中的密钥,然后回显它的值。in_array不能使用关联数组php

$array = array("abc" => "123", 
       "def" => "456", 
       "ghi" => "789"); 

if(in_array("abc", $array)) 
    echo $allowed["abc"]; 

应该呼应123,而是我得到:

in_array() expects parameter 2 to be array, null given 

您可以使用关联数组与in_array()

我也试过array_key_exists()但它给出了同样的错误?

愚蠢的错误是愚蠢的

$array$this->array ......漫长的一天,我删除可能?

+4

错误提示'$ array'是不是有什么你相信它是。 – kero

+5

'in_array'测试值,而不是密钥。 – Chris

+2

你的代码不应该回显123,也不要抱怨$ array为空。无论你的实际代码是什么,你都会滥用[in_array()](http://php.net/in_array)。 –

回答

1

您应该改用array_key_exists

+5

“我也尝试了array_key_exists(),但它给出了同样的错误?” - 从OP –

+0

哦,没错 - 然后:-) –

1

if (isset($array["abc"])) 
+1

@BillWoodger如果它只是答案代码中的印刷/小错误 - 为什么不编辑它? – kero

+0

我没有考虑那里的审稿人,并认为你的意思一般。你可能就在这里 – kero

0

in_array检查尝试用于阵列中是否存在值。要检查密钥是否存在,应该使用isset。

0

试试这个

$array = array("abc" => "123", 
       "def" => "456", 
       "ghi" => "789"); 


    if (isset($array["abc"])) 
     echo $array["abc"]; 
0

您参考$允许并试图呼应出$允许的(“ABC”)的值,它不存在。

替换$允许使用$阵列:

$array = array("abc" => "123", 
       "def" => "456", 
       "ghi" => "789"); 

if(array_key_exists("abc", $array)) 
{ 
    echo 'Found! '. $array["abc"]; // Update this line to $array 
}  

或者,你可以做一个array_flip(),那么你可以使用in_array:

if(in_array("abc", array_flip($array))) 
{ 
    echo 'Found! '. $array["abc"]; 
}