2012-08-04 46 views
0

在我的程序中,我向表發送SQL查詢,並返回一個資源,我使用函數mysql_fetch_array()。第一個參數是來自SQL查詢的結果資源,但是如果您留下下一個參數,那麼缺省值是返回一個同時具有關聯索引id和數字id的數組。僅重新校準混合關聯和數值數組中的數字索引

這對我很有用,因爲我使用這些結果來創建另一個查詢,因此需要訪問關聯ID和數字一個,因爲我需要遍歷這個涉及增加數字的數組。但是,我通過PHP函數刪除了空值,現在我剩下一個不連續的數字條目。據我所知,我可以使用array_values()函數來重新校準我的ID,但是這消除了來自陣列的我的關聯ID。

有沒有辦法只重新校準我的數字ID,但不能刪除關聯ID?

例如

'id' = [0] = '0001' 
'gender' = [1] = null 
'religion' = [2] = 'jewish' 

我刪除了空值,即性別:

'id' = [0] = '0001' 
'religion' = [2] = 'jewish' 

現在我想的數值指標renormalise到:

'id' = [0] = '0001' 
'religion' = [1] = 'jewish' 

回答

0

我不認爲有一個在此功能的內置,但你可以遍歷槽的陣列來獲取數字索引值:

$data = array(
    'id'  => '0001', 
    'gender' => null, 
    'religion' => 'jewish', 
    0   => '0001', 
    1   => null, 
    2   => 'jewish', 
); 

$num_keys = array(); 
foreach ($data as $k => $v) { 
    if ($v === null) { 
     unset($data[$k]); 
     continue; 
    } 
    if (is_numeric($k)) { 
     $num_keys[$k] = $v; 
     unset($data[$k]); 
    } 
} 
ksort($num_keys); 
$data = array_merge($data, array_values($num_keys)); 
var_dump($data); 
0

我沒有證實了這一但我認爲這應該管用。如果不告訴我,我會刪除我的答案。

$i=0; 
foreach($array as $key=>$value) { 
    $array2[$i] = $array2[$key] = $value; 
    $i++; 
}