2017-06-09 13 views
0

MS SQLデータベースの複数のテーブルからデータを取り出し、配列を出力するコードがあります。その配列を使用して、日常的に必要とされています。現在、ID、名前、日付、数字(カンマを含む名前があるため、アスタリスクが区切られています)のフィールドが表示されます。複数の行のデータを1つの配列に結合する

| ID | NAME | 06-04 | 06-05 | 06-06 | 06-07 | 06-08 | 06-09 | 06-10 | 
| 74 | xxxx | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 
| 75 | yyyy | - | 123 | 111 | 124 | 107 | 194 | 195 | 

私の意図が合併した:に

74*xxxx*2017-06-04*1 
74*xxxx*2017-06-05*1 
74*xxxx*2017-06-06*2 
74*xxxx*2017-06-07*2 
74*xxxx*2017-06-08*2 
74*xxxx*2017-06-09*2 
74*xxxx*2017-06-10*2 
75*yyyy*2017-06-05*123 
75*yyyy*2017-06-06*111 
75*yyyy*2017-06-07*124 
75*yyyy*2017-06-08*107 
75*yyyy*2017-06-09*194 
75*yyyy*2017-06-10*195 

私は似てグリッドにそれをプリントアウトできるように、IDごとに単一の値にマージするためにそれらを取得しようとしていますキーとしての日付を持つ単一のアレイに配列値、私がしようとしていた(最新)のコードは次のようになります。それが見えるように、単一のアレイラインにマージすることを意図して

$schedule[] = $PID . "*" . $program . "*" . $date . "*" . $num; 


$grid = array(); 
foreach ($schedule as $item) { 

    $ex = explode('*', $item); 
    $grid[$ex[0]] = array(
     'name' => $ex[1], 
     $ex[2] => $ex[3], 
    ); 
} 

[74] => Array ([name] => xxxx [2017-06-04] => 1 [2017-06-05] => 1 [2017-06-06] => 2 [2017-06-07] => 2 [2017-06-08] => 2 [2017-06-09] => 2 [2017-06-10] => 2) 

はその後、私はちょうど値を引いて、各セルに印刷するには$グリッド[$ i]の[1]などと行ずつ、それを使用することができます。私は上記以外の方法を試しました。それは私が現在コードスニペットを持っている唯一のものです。ID単位で追加する最後の値を保持できるようになっています。

誰かが何らかの入力を提供できるのであれば、私は行方不明または単に理解していない部分があると確信しています。

+0

です。今夜のPHP。 – mkaatman

答えて

0

私があなたの要求を正しく理解していれば、以下のコードで目的の配列が得られます。

$schedule[] = '74*xxxx*2017-06-04*1'; 
$schedule[] = '74*xxxx*2017-06-05*1'; 
$schedule[] = '74*xxxx*2017-06-06*2'; 
$schedule[] = '74*xxxx*2017-06-07*2'; 
$schedule[] = '74*xxxx*2017-06-08*2'; 
$schedule[] = '74*xxxx*2017-06-09*2'; 
$schedule[] = '74*xxxx*2017-06-10*2'; 
$schedule[] = '75*yyyy*2017-06-05*123'; 
$schedule[] = '75*yyyy*2017-06-06*111'; 
$schedule[] = '75*yyyy*2017-06-07*124'; 
$schedule[] = '75*yyyy*2017-06-08*107'; 
$schedule[] = '75*yyyy*2017-06-09*194'; 
$schedule[] = '75*yyyy*2017-06-10*195'; 

$grid = array(); 
foreach ($schedule as $item) { 
    $ex = explode('*', $item); 
    $grid[$ex[0]]['name'] = $ex[1]; 
    $grid[$ex[0]][$ex[2]] = $ex[3]; 
} 
print_r($grid); 

とputうち誰が私はhttp://php.net/manual/en/function.array-reduceを使用する例をまとめてみます応答しない場合

Array 
(
    [74] => Array 
     (
      [name] => xxxx 
      [2017-06-04] => 1 
      [2017-06-05] => 1 
      [2017-06-06] => 2 
      [2017-06-07] => 2 
      [2017-06-08] => 2 
      [2017-06-09] => 2 
      [2017-06-10] => 2 
     ) 

    [75] => Array 
     (
      [name] => yyyy 
      [2017-06-05] => 123 
      [2017-06-06] => 111 
      [2017-06-07] => 124 
      [2017-06-08] => 107 
      [2017-06-09] => 194 
      [2017-06-10] => 195 
     ) 

) 
+0

これは私が必要としていたものです!私は、私が正しいトラックに期待していたものよりも近くにいるのを見てうれしいです。 ありがとうございます! –

関連する問題