2013-05-09 4 views
-1

У меня есть $ _SESSION ['errors'], для которого print_r возвращает Array (поле [0] =>). Но когда я пытаюсь это:

$errors = $_SESSION['error']; 
    if(array_key_exists (0, $error)) {echo "yes";} else{echo "no";} 

Он выдает сообщение об ошибке: Предупреждение: array_key_exists() ожидает параметр 2 будет массив, нуль приведены в C: \ WAMP \ WWW \ песочница \ formvalidation \ formvalidation.php в строке 7

Что не так?

+3

Где находится 'print_r'? Если бы это было прямо над этими двумя строками, код работал бы, и вы бы не спросили. – Jon

+0

yes Я начал его, и print_r ($ _ SESSION ['error']) в порядке, он выдает Array ([0] => field). Проблема заключается в том, что код, отправленный мной –

+0

, попробует проверить, что он существует слишком 'if ((isset ($ _ SESSION ['errors'])) && (count ($ _ SESSION ['errors'])> 0)) {echo 'yes'; } ' – Waygood

ответ

0

Вы получаете эту ошибку, потому что ключ 'errors' в массиве $ _SESSION не существует. $ _SESSION - это массив, но ключ 'errors' не был установлен или не имеет значения массива.

Используйте это, чтобы не получить эту ошибку:

$errors = is_array($_SESSION['errors']) ? $_SESSION['errors'] : array(); 

Это использует тройной оператор в основном говорят:

$errors = IS ERRORS AN ARRAY ? YES : NO; 

If yes, assign $_SESSION['errors'] to $errors; 
If no, assign array() to $errors; 
+0

Спасибо, Оззи, это работает. –

0

Убедитесь, что $ ошибок является многомерным массивом, если вы хотите использовать array_key_exists () на нем

0

Try с is_arry как

if(is_array($errors)) 
{  
    if(array_key_exists (0, $errors)) 
    { 
     echo "yes"; 
    } 
    else 
    { 
     echo "no"; 
    } 
} 
Смежные вопросы