2017-04-18 17 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 
) 

インデックス1とキーstatusの値を削除した後、私は期待される出力は以下のようになる必要がありますように、この配列のインデックスを再作成する必要が

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

関連する問題