моя таблица базы данных содержит следующие данные
____________________________________
| name | start_date | end_date | класс |
======================
| john | 2015-01-01 | 2015-01-01 | срочно |
| mary | 2015-01-12 | 2015-01-15 | важный |
| peter | 2015-01-19 | 2015-01-20 | важный |
| john | 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-> блок, он дал мне следующее расположение массива
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 ..:) – LBMG
Я бы сохранил «ярлыки» в качестве ключей и работал оттуда. Вы только усложняете ситуацию, если хотите использовать номер индекса, как вы указали в своем предполагаемом примере. Чтобы поддержать пример, который вы хотите, я думаю, вам нужно пройти через массив, как в строках, чтобы проверить наличие вхождений john, а затем добавить данные. Использовать john в качестве ключа сделает код проще. – Skjaar