2

我编写了一些 PHP 代码来从我的 MySQL 数据库中检索一些数据。

我的 NetBeans 调试器 (v7.4) 显示所有数组元素和相关键($data_array_from_db),哪些键对应于数据库表中的列字段,除了哪些数据库字段的键未填充(值为 NULL)。

但是,当在下面的代码中执行 array_key_exists() 函数以表示与此类未填充的数据库字段相对应的“akey”时,array_key_exists() 返回一个“真”值(而不是预期的假) - 好像该键确实存在(同样,NetBeans 调试器不显示 $data_array_from_db['akey'])。

我确信数据库函数 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)) { // Database 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 { // Database value does not exist; set to 0
  $response_array[0]['akey'] = 0;
}
4

2 回答 2

2

NULL是一个值,如果要替换它,则需要检查它。改变:

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

至:

if(array_key_exists('akey',$data_array_from_db) && !is_null($data_array_from_db['akey'])){
于 2013-11-08T17:00:34.943 回答
0

或者只是检查它是否存在并且它不为空:

if (!empty($data_array_from_db['akey'])) {
于 2013-11-08T17:14:27.653 回答