2017-06-09 233 views
0

我有一些代碼,從MS SQL數據庫的多個表拉,整理數據,並輸出一個數組,然後我需要使用數組來填充工作表,告訴別人什麼項目需要每天進行。現在輸出如下所示,其中的字段是ID,名稱,日期,數字(由於某些名稱包含逗號,因此星號被刪除)。從多條線路的數據組合成一個單一的陣列

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一個值,這樣我可以把它打印出來,以一個網格,類似於:

| 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 | 

我的意圖是要合併數組值與日期作爲密鑰的單一陣列中,我試圖在(最近)的代碼是:

$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) 

之後我可以只用$ grid [$ i] [1]等線將它拉出來並打印到每個單元格。我嘗試了除上述以外的其他方法,這是目前我只有一個代碼片段的方法,我只能使用它來保留每個ID添加的最後一個值。

我敢肯定有一塊我失蹤或者根本不理解,如果有人可以提供一些輸入我們將不勝感激。

+0

如果沒有人響應我會盡量放在一起使用http://php.net/manual/en/function.array-reduce一個例子。 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); 

進出賣出期權

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

這正是我需要的!我很高興看到我比我預期的正確軌道更接近。 謝謝! –

相關問題