【发布时间】:2015-05-27 07:10:29
【问题描述】:
我的数据库表包含以下数据
____________________________________
|名称 |开始日期||结束日期 |课程 |
=================================
|约翰 | 2015-01-01 | 2015-01-01 |紧急 |
|玛丽 | 2015-01-12 | 2015-01-15 |重要 |
|彼得 | 2015-01-19 | 2015-01-20 |重要 |
|约翰|| 2015-01-26 | 2015-01-28 |重要 |
==================================
这些是我获取数据的 sql 代码
$sql="
SELECT `name`,`start_date`,`end_date`,`class`,
TIMESTAMPDIFF(DAY,start_date,end_date)+1 AS no_days
FROM `schedule`"
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$data[] = array(
'label' => $row["name"],
'start' => $row["start_date"],
'no_days'=> $row["no_days"],
'class' => $row["class"],
);
}
class Gantti{
var $data = array();
var $blocks = array();
var $block = array();
// the rest of gantti class code is for table format so i didnt include it in here
}
function parse(){
foreach($this->data as $d){
$this->blocks[$d['label']][]=array(
'label' => $d['label'],
'start'=>$start=($d['start']),
'no_days'=>$no_days=$d['no_days'],
'class'=>$d['class']);
}
}
var_dump($this->blocks);
在我转储 $this->block 后,它给了我以下数组排列
array()
john=>
array()
0=>
array()
'label' => string 'john'
'start' => string '2015-01-01'
'no_days'=> string '1'
'class' => string 'urgent'
1=>
array()
'label' => string 'john'
'start' => string '2015-01-26'
'no_days'=> string '3'
'class' => string 'important'
mary=>
array()
0=>
array()
'label' => string 'mary'
'start' => string '2015-01-12'
'no_days'=> string '4'
'class' => string 'important'
peter=>
array()
0=>
array()
'label' => string 'peter'
'start' => string '2015-01-19'
'no_days'=> string '2'
'class' => string 'important'
但我的预期输出是这样的
array()
0=>
array()
'label' => string 'john'
'start' =>
array()
0=> string '2015-01-01'
1=> string '2015-01-26'
'no_days' =>
array()
0=> string '1'
1=> string '3'
'class' =>
array()
0=> string 'urgent'
1=> string 'important'
1=>
array()
'label' => string 'mary'
'start' =>
array()
0=> string '2015-01-12'
'no_days' =>
array()
0=> string '4'
'class' =>
array()
0=> string 'important'
2=>
array()
'label' => string 'peter'
'start' =>
array()
0=> string '2015-01-19'
'no_days' =>
array()
0=> string '2'
'class' =>
array()
0=> string 'important'
如何组合相同的标签值来获得预期的输出?
【问题讨论】:
-
而且你还在使用mysql函数,为什么?他们甚至已经弃用了一段时间,这意味着所有新代码都不应该使用它......
-
@WadeShuler 说来话长.. 但在我得到这个问题的答案后,我将停止使用 mysql.. :-)
-
我会将“标签”保留为键并从那里开始工作。如果您想使用您在预期示例中所述的索引号,您只会使事情复杂化。为了支持您想要的示例,我认为您需要在构建中循环遍历数组以检查是否出现 john,然后添加数据。使用 john 作为键将使代码更容易。
标签: php mysql multidimensional-array