2012-08-04 3 views
0

내 프로그램에서 SQL 쿼리를 테이블로 보내고이 테이블에 함수 mysql_fetch_array()을 사용하는 리소스가 반환됩니다. 첫 번째 인수는 SQL 쿼리의 결과 리소스이지만 다음 인수를두면 기본값은 연관 인덱스 id와 숫자 ID가 모두있는 배열을 반환하는 것입니다.혼합 연관 및 숫자 배열에서 숫자 인덱스 만 재조정

이 결과를 사용하여 다른 쿼리를 작성하므로이 숫자를 증가시키는 배열을 반복해야하므로 연관 ID와 숫자 모두에 대한 액세스 권한이 필요하기 때문에 유용합니다. 그러나 PHP 함수를 통해 null 값을 제거한 후 불연속 숫자 항목이 남아 있습니다. array_values() 함수를 사용하여 ID를 재조정 할 수 있지만 배열에서 연관 ID가 제거되는 것을 알고 있습니다.

숫자 ID 만 재조정하지만 연관 ID는 제거하지 않는 방법이 있습니까?

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

가 지금은에 숫자 인덱스를 renormalise 할 :

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

내가 널 값, 즉성에 제거 I이 확인되지 않았다

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

답변

0
나는 그러나 당신이 숫자 인덱스 값을 얻을 수있는 배열 물마루 반복 할 수, A는 이것에 대한 기능을 내장 없다고 생각

:

$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++; 
}