Не найден хэш-ключ PHP: каково ожидаемое поведение? - PullRequest
2 голосов
/ 28 ноября 2011

Я слышал, что вы получаете сообщение об ошибке, если пытаетесь получить доступ к ключу в хэше, который не существует.

Однако я, похоже, просто получаю пустую строку или нулевое значение.

Пример:

<?php

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

echo "a key that's in the hash: <" . $hash["abc"] . "><br />";

echo "a key that's not in the hash: <" . $hash["ghi"] . ">";

?>

Вывод:

a key that's in the hash: <123>
a key that's not in the hash: <>

Что здесь происходит?

Яиспользуя PHP v5.3.8.

Ответы [ 3 ]

4 голосов
/ 28 ноября 2011

Вы, вероятно, скрываете свои ошибки уведомления (подробнее здесь ). Поместите это наверху своего сценария:

error_reporting(E_ALL);
ini_set('display_errors', true);
1 голос
/ 28 ноября 2011

Как сказал Уэсли ван Опдорп, ваши текущие настройки отчетов об ошибках могут скрывать ошибки уведомлений.

Вы можете разрешить все ошибки с помощью этого фрагмента кода (вверху вашего скрипта):

error_reporting(E_ALL);
ini_set('display_errors', true);

В любом случае, я бы порекомендовал вам проверить, существует ли определенный ключ через isset():

if ( isset($array['key']) )
{
  /* exists */
}
else
{
  /* doesn't exist */
}
0 голосов
/ 28 ноября 2011

Это зависит от настройки error_reporting .Вы получите Неопределенное смещение уведомление, если вы установите error_reporting = E_ALL

>php -d error_reporting='E_ALL' -r '$a=array(); print $a["b"];'
PHP Notice:  Use of undefined constant b - assumed 'b' in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...