2017-04-18 15 views
1

나는 PHP로 postgresql을 처음 사용하고 있습니다. pg_fetch_array() 함수를 사용하여 배열 아래에 있습니다. 내가혼합 배열 및 키 다시 제거

unset($row[1]); 
unset($row['status']; 
$foo = array_values($row); 
echo "<pre>"; 
print_r($foo) 
echo "</pre>"; 

을 시도하고 출력을 가지고

Array 
(
    [0] => 
    [name] => 
    [1] => C2005 
    [code] => C2005 
) 

:

Array 
(
    [0] => 
    [name] => 
    [1] => 1 
    [status] => 1 
    [2] => C2005 
    [code] => C2005 
) 

인덱스 1status의 값을 제거한 후, 나는 예상 결과물이가되도록이 배열을 인덱싱해야

Array 
(
    [0] => 
    [name] => 
    [2] => C2005 
    [code] => C2005 
) 

배열에서 특정 키를 제거한 후 숫자 인덱스를 다시 인덱싱 할 수 있습니까?

+0

사용'pg_fetch_assoc는()''당신은 늘 그것을 – RiggsFolly

+0

는 또한'pg_fetch_array ($ 결과, NULL, PGSQL_ASSOC)를 사용하는 경우에만 명명 된 열을 반환 것이라고 숫자 인덱스 열을 얻을;' 연관 배열 – RiggsFolly

+1

을 얻으려면 select 문에서'name, code' 만 선택하면 안되는 이유는 무엇입니까? – hassan

답변

0

키를 기준으로 배열을 필터링 할 수 있습니다. Live demo. 대신 pg_fetch_array()`의

unset($array['status']); 
$number_keys = array_values(array_filter($array, function($k){return is_int($k) && $k != 1;}, ARRAY_FILTER_USE_KEY)); 
$nonnumber_keys = array_filter($array, function($k){return is_string($k);}, ARRAY_FILTER_USE_KEY); 
$result = array_merge($number_keys, $nonnumber_keys); 
+0

작동하지 않았습니다. 귀하의 예제에서 $ array를 배열 변수 – deltaforce

+0

으로 바꾸면 $ result가 출력됩니다. 테스트에서 작동합니다. –

+0

그것은 일했다! 라이브 데모를 제공해 주셔서 감사합니다. 나는 뭔가를 놓친 것을 관찰했다. 하지만 이제 당신의 솔루션이 나를 위해 일하고 있습니다. – deltaforce