我有一些代码从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 :(得分: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
)
)