2014-02-06 70 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"]; 
}