1

SQL または PHP を使用して、SQL ステートメントから多くの列を返す方法を探していますが、一度に 1 列ずつ反復処理できます。

たとえば、次のようなクエリがあります。

ID | N1 | N2
1  | 15 | 20
2  | 25 | 30
3  | 35 | 40

ループ内で a foreach $result as $rowand use を使用できることはわかっていますが、反復処理を行わず$row['T1']に ALL を配列に入れる方法を探しています。$row['T1']これを行う方法を見つけることができませんでした。

次のように編成される配列(または配列のセット)が必要です。

myArray = array( 'N1' => array('15', '25', '35'),
                 'N2' => array('20', '30', '40')
          );

array_sum()や などの標準配列関数を使用してアクセスできるようにしarray_slice()ます。

MySQL、PHP(PDO)を使用して、多数のフィールドに対してこれを簡単かつプログラム的に行う方法はありますか?

私の SQL は複雑な結合を使用して多くのフィールドを取得します。これらのフィールドは平均化してテキスト ファイルに出力する必要があります。標準テーブルにすべてのフィールドを含めるのではなく、フィールドをグループ化したいと考えています。

N1:
   15
   25
   35
N2:
   20
   30
   40

したがって、アレイを適切にセットアップする必要があります。

だから:これを行うにはどの方法を使用できますか?全体を繰り返し処理して、自分の配列のいくつかに$resultプッシュできることはわかっていますが、これを行うためのより良い方法は確かにありますか? $row['index']複雑な結合では、フィールドごとに個別のクエリを個別に実行する方が速いですか?

4

2 に答える 2

0

私が思いついたもの。2次元配列以外は許可されていませんが、別のforステートメントまたは何かでそれを修正できると確信しています。これにより、鍵を保管することができました。

// Trasposes, while keeping the keys, a 2-dimensional array.
function transpose($array) {
  $tArray = array();
  foreach ($array as $iKey => $i) {
    foreach ($i as $jKey => $j) {
      $tArray[$jKey][$iKey] = $j;
    }
  }
  return $tArray;
}

結果:

$myArr:
Array
(
    [0] => Array
        (
            [N1] => 15
            [N2] => 20
        )

    [1] => Array
        (
            [N1] => 25
            [N2] => 30
        )

    [2] => Array
        (
            [N1] => 35
            [N2] => 40
        )

    [3] => Array
        (
            [N1] => 45
            [N2] => 50
        )

)

transpose($myArr)
Array
(
    [N1] => Array
        (
            [0] => 15
            [1] => 25
            [2] => 35
            [3] => 45
        )

    [N2] => Array
        (
            [0] => 20
            [1] => 30
            [2] => 40
            [3] => 50
        )

)
于 2013-04-11T18:25:40.513 に答える