Я написал некоторый 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;
}
print_r или var_dump от $ data_array_from_db было бы полезно ... – rernesto
Да, он существует и его значение «NULL» ... Вы также должны проверить значение –
из самого руководства (http://us3.php.net/array_key_exists): Примечание: Для соображений обратной совместимости array_key_exists() также возвращает TRUE, если ключ является свойством, определенным внутри объекта, заданного как массив. На это поведение нельзя полагаться, и необходимо следить за тем, чтобы массив был массивом. Чтобы проверить, существует ли свойство в объекте, используйте свойство_exists(). – Satya