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