2011-09-24 68 views
0

有人可以告訴我爲什麼下面的代碼不起作用嗎?array_key_exist第一層多維數組

$ReturnData=array(
    'cardauth'=>array('success'=>'') 
); 

$Query="SELECT cardauth FROM y WHERE x = '".$x."'"; 
$Data=mysql_query($Query); 
while($Row = mysql_fetch_array($Data)){ 
    foreach($Row as $k => $v){ 
     if(array_key_exists($k,$ReturnData)){ 
      $ReturnData[$k]['success']=$v; 
     } 
    } 
} 
die(print_r($ReturnData)); 

我試圖設置數組$ReturnData與列正在由MySQL的取交叉的第二維度的值。 'cardauth'將是一個BIT。我使用相同的方法在同一個循環內部填充單維數組。我已經刪除了所有不必要的代碼。

array_key_exists不起作用。 $ReturnData['cardauth']['success']未被設置爲該列的值。

+0

問題是BIT數據類型。我的邏輯是尋找一個1或0. –

+0

我認爲代碼沒問題,你需要檢查變量$ x的值或調試代碼,嘗試將數組打印出循環。 – punit

回答

0

使用else來解決你的問題!此else可能是:

} else { 
    echo sprintf("array_key_exists did return true because [%s] does not contain %s", 
    implode(array_keys($ReturnData), ', '), 
    $k); 
}