0

私のプログラムでは、SQLクエリをテーブルに送信すると、関数を使用するリソースが返さmysql_fetch_array()れます。最初の引数はSQLクエリの結果リソースですが、次の引数を省略した場合、デフォルトでは、連想インデックスIDと数値IDの両方を持つ配列が返されます。

これらの結果を使用して別のクエリを作成しているため、これは私にとって便利です。この配列を反復処理する必要があるため、関連付けIDと数値IDの両方にアクセスする必要があります。ただし、PHP関数を使用してnull値を削除したため、不連続な数値エントリが残っています。この関数を使用してIDを再調整できることは理解していますarray_values()が、これにより、配列から関連付けられたIDが削除されます。

数値IDのみを再調整し、関連IDを削除しない方法はありますか?

例えば

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

null値、つまり性別を削除しました。

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

ここで、数値インデックスを次のように再正規化します。

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

2 に答える 2

0

私はこれを確認しませんでしたが、これはうまくいくはずだと思います。教えてくれない場合は、回答を削除します。

$i=0;
foreach($array as $key=>$value) {
  $array2[$i] = $array2[$key] = $value;
  $i++;
}
于 2012-08-04T19:06:04.810 に答える
0

このための組み込み関数はないと思いますが、配列を反復処理して数値インデックス値を取得できます。

$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);
于 2012-08-04T19:16:28.730 に答える