2014-02-06 2 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 или жалоба на массив $, равный null. Независимо от вашего фактического кода, вы злоупотребляете [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"]; 
}  
Смежные вопросы