2017-04-18 83 views
1

我是新來的postgresql與PHP。我使用pg_fetch_array()函數獲取下面的數組。從混合陣列中刪除密鑰,並重新編號

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

除去指數1和關鍵status值之後,我不得不重新索引這個數組,這樣預期的輸出應該成爲這樣的:

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

我試圖

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

,並得到輸出

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

它沒有工作。我用你的例子中的數組變量 – deltaforce

+0

替換$ array之後打印$結果它在測試中有效。 –

+0

它的工作!感謝您提供現場演示。我觀察到我錯過了一些東西。但現在你的解決方案正在爲我工​​作。 – deltaforce

相關問題