【发布时间】:2013-11-08 16:40:57
【问题描述】:
我编写了一些 PHP 代码来从我的 MySQL 数据库中检索一些数据。
我的 NetBeans 调试器 (v7.4) 显示所有数组元素和相关键($data_array_from_db)哪些键与数据库表中的列字段对应,除了哪些数据库字段的键未填充(值为 NULL) .
但是,当在下面的代码中执行 array_key_exists() 函数以表示与此类未填充的数据库字段相对应的“akey”时,array_key_exists() 返回一个“真”值(而不是预期的假) - 好像key 确实存在(同样,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;
}
【问题讨论】:
-
$data_array_from_db 的 print_r 或 var_dump 会很有用...
-
是的,它存在并且它的值是
NULL...你也应该检查值 -
来自手册本身 (us3.php.net/array_key_exists):注意:出于向后兼容性的原因,如果 key 是在以数组形式给出的对象中定义的属性,array_key_exists() 也将返回 TRUE。不应依赖此行为,应注意确保数组是数组。要检查对象中是否存在属性,请使用 property_exists()。
-
执行
var_dump($data_array_from_db)并查看其中显示的内容。假设您是从数据库中获取的,那么具有空值的字段仍然有相应的可用键是有意义的。跨度> -
thnx for all cmets (!) 我刚刚使用了 var_dump 它确实显示了密钥。我仍然想知道为什么 netbeans 不显示那些特定的键(??)