2013-11-08 4 views
0

Я написал некоторый php-код для извлечения некоторых данных из моей базы данных mysql.ключ в ассоциативном массиве существует или нет?

Отладчик My Netbeans (v7.4) показывает все элементы массива и связанные ключи (из $ data_array_from_db), какие ключи соответствуют полям столбца в таблице базы данных, ИСКЛЮЧИТЬ ключи, поля которых не заполнены (значение NULL). Однако, когда функция array_key_exists() выполняется в коде ниже, например «akey», который соответствует такому не заполненному поле базы данных, array_key_exists() возвращает значение «true» (вместо ожидаемого false) - как если бы ключ существовал (опять же, отладчик Netbeans не показывает $ data_array_from_db ['akey']). Я точно знаю, что функция db array_key_exists() работает правильно. Я что-то интерпретирую неправильно? Имеет ли/должен существовать ключ, если его соответствующее значение базы данных равно NULL?

$data_array_from_db = $corpdb->GetSpecificDBRecords($sqlquery5); //GetSpecificDBRecords() includes some PDO statements 
if(array_key_exists('akey',$data_array_from_db)){ //db value is optional; exists? 
    $response_array[0]['akey'] = $data_array_from_db['akey']; //this line executed while akey does not show in Netbeans debuggers       
} 
else{ //db value does not exist; set to 0 
    $response_array[0]['akey'] = 0; 
} 
+0

print_r или var_dump от $ data_array_from_db было бы полезно ... – rernesto

+0

Да, он существует и его значение «NULL» ... Вы также должны проверить значение –

+0

из самого руководства (http://us3.php.net/array_key_exists): Примечание: Для соображений обратной совместимости array_key_exists() также возвращает TRUE, если ключ является свойством, определенным внутри объекта, заданного как массив. На это поведение нельзя полагаться, и необходимо следить за тем, чтобы массив был массивом. Чтобы проверить, существует ли свойство в объекте, используйте свойство_exists(). – Satya

ответ

0

NULL это значение, и вы должны проверить это, если вы хотите, чтобы заменить его. Изменение:

if(array_key_exists('akey',$data_array_from_db)){ 

To:

if(array_key_exists('akey',$data_array_from_db) && !is_null($data_array_from_db['akey'])){ 
0

Или просто проверить, что существует, и это не пустые:

if(!empty($data_array_from_db['akey'])) {

Смежные вопросы