关联数组中的键是否存在?

时间:2013-11-08 16:40:57

标签: php netbeans

我写了一些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; 
}

2 个答案:

答案 0 :(得分:1)

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'])){

答案 1 :(得分:0)

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

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