这是我的代码。我在评论中一步一步地解释了它。 对于恢复它:对于每个可用性,我检查日期是否已经在我的日期列表中(谁包含可用性)。 如果我没有找到它,我会添加一天,如果我的日期列表&我添加一个数组。与此同时,我在同一个数组中添加了当前可用时间。
如果我找到它,我只在子数组中添加小时(索引:0)。
有没有更好的方法来将我的“小时”分组?
foreach($entreprises as $entreprise)
{
// Array of days
$Disponibilites = array();
// Array of day who contains availabilities.
$JourneesDisponibles=array('nomJourDispo'=>'test1','jourDispo'=>'test2','moisDispo'=>'test3','jourMoisDispo'=>'test4');
$j=0;
foreach($entreprise[0]->getPropose() as $dispos)
{
// For each availability, I store its time, day and month
$jourDispo = new \DateTime();
$dateDispo = $dispos->getDateDispo(); // The whole date : YYYY-MM-DD HH:MM:SS
$nomJourDispo = $dispos->getJourDispo(); // Day , ex : Lundi (monday)
$jourDispo = $dateDispo->format('d'); // Day, ex : 22
$moisDispo = $dispos->getMoisDispo(); // month
$heureDispo = $dateDispo->format('H:i'); //Hour
$jourMoisDispo = $jourDispo.$moisDispo; //Day + Month = unique in the year
// if(($JourneesDisponibles['jourMoisDispo']) != null)
for($j = 0; $j < count($JourneesDisponibles);++$j)
{
// Here I'm looking for the day - If it not exists, I add it in the list of days.
if($JourneesDisponibles['jourMoisDispo'] != $jourMoisDispo){
$JourneesDisponibles['nomJourDispo']=$nomJourDispo;
$JourneesDisponibles['jourDispo']=$jourDispo;
$JourneesDisponibles['moisDispo']=$moisDispo;
$JourneesDisponibles['jourMoisDispo']=$jourMoisDispo;
// Here I add an array to the array (index : 0) who contains the hour of the availability
array_push($JourneesDisponibles,array($heureDispo));
}
else
{
// Else, If the day already exists, I add the hour of the availability in the day.
array_push($JourneesDisponibles[0],($heureDispo));
}
}
//Here I add the day of availabilities in the list of availabilities
array_push($Disponibilites,$JourneesDisponibles);
}
// Here I associate the company with its availabilities
array_push($entreprises[$i],$Disponibilites);
$i++;
}
// I return all objects I need
return $this->render('CalandmeBundle:Default:recherche.html.twig',array('adresse' => $adresse,'latitude'=>$latitude,
'longitude'=>$longitude,'entreprises'=>$entreprises));
我尝试了这个,但是我得到了一个未定义的偏移误差(0):
for($j = 0; $j < count($JourneesDisponibles);++$j)
{
// Here I'm looking for the day - If it not exists, I add it in the list of
if($JourneesDisponibles[$j]['jourMoisDispo'] != $jourMoisDispo){
$JourneesDisponibles[$j]['nomJourDispo']=$nomJourDispo;
$JourneesDisponibles[$j]['jourDispo']=$jourDispo;
$JourneesDisponibles[$j]['moisDispo']=$moisDispo;
$JourneesDisponibles[$j]['jourMoisDispo']=$jourMoisDispo;
// Here I add an array to the array (index : 0) who contains the hour of the availability
array_push($JourneesDisponibles[$j],array($heureDispo));
}
else
{
// Else, If the day is recognized, I add the hour of the availability in the day.
array_push($JourneesDisponibles[$j][0],($heureDispo));
}
array_push($Disponibilites,$JourneesDisponibles[$j]);
}
编辑:我添加了一个新数组,但条件不起作用
foreach($entreprises as $entreprise)
{
// Array of availabilities
$Disponibilites = array();
// Array of day who contains availabilities.
$JourneesDisponibles=array(array('nomJourDispo'=>'','jourDispo'=>'','moisDispo'=>'','jourMoisDispo'=>''));
// $Journee= array();
$j=0;
foreach($entreprise[0]->getPropose() as $dispos)
{
// For each availability, I store its time, day and month
$jourDispo = new \DateTime();
$dateDispo = $dispos->getDateDispo(); // The whole date : YYYY-MM-DD HH:MM:SS
$nomJourDispo = $dispos->getJourDispo(); // Day , ex : Lundi (monday)
$jourDispo = $dateDispo->format('d'); // Day, ex : 22
$moisDispo = $dispos->getMoisDispo(); // month
$heureDispo = $dateDispo->format('H:i'); //Hour
$jourMoisDispo = $jourDispo.$moisDispo; //Day + Month = unique in the year
// if(($JourneesDisponibles['jourMoisDispo']) != null)
for($j = 0; $j < count($JourneesDisponibles);++$j)
{
// Here I'm looking for the day - If it not exists, I add it in the list of
// $key=0;
// var_dump(($JourneesDisponibles));
if($JourneesDisponibles[$j]['nomJourDispo'] != $jourMoisDispo){
$JourneesDisponibles[$j]['nomJourDispo']=$nomJourDispo;
$JourneesDisponibles[$j]['jourDispo']=$jourDispo;
$JourneesDisponibles[$j]['moisDispo']=$moisDispo;
$JourneesDisponibles[$j]['jourMoisDispo']=$jourMoisDispo;
// Here I add an array to the array (index : 0) who contains the hour of the availability
array_push($JourneesDisponibles[$j],array($heureDispo));
}
else
{
// Else, If the day is recognized, I add the hour of the availability in the day.
array_push($JourneesDisponibles[$j][0],($heureDispo));
}
array_push($Disponibilites,$JourneesDisponibles[$j]);
}
//Here I add the day of availabilities in the list of availabilities
}
// Here I associate the company with its availabilities
array_push($entreprises[$i],$Disponibilites);
$i++;
}
我知道了,我该如何解决这个问题?
答案 0 :(得分:0)
仅给出您的第一个列数据,您可以按日期对数组进行分块(将日期转换为时间戳),然后迭代它们并根据需要显示这些时间戳。这里有一个简单的显示示例:
function makeGrid() {
$(".gridForm").submit(function(e) {
e.preventDefault();
x=$('#gridHeight').val(); // value of height
y=$('#gridWidth').val(); // value of width
for(i=0; x>i;x--){
$('#pixels').append('<tr><td></td></tr>');
}
for(j=1; y>j ;y--){
$('tr').append('<td></td>');
}
});
}
makeGrid();
输出:
<?php
$availabilities =
array (
'18-01-04 09:00:00',
'18-01-04 10:00:00',
'18-01-04 11:00:00',
'18-01-05 12:00:00',
'18-01-05 13:00:00',
);
$chunked_by_day = [];
foreach($availabilities as $availability)
$chunked_by_day[date('Ymd', $ts = strtotime($availability))][] = $ts;
foreach($chunked_by_day as $day)
echo
date('D d M', $day[0])
,
"\n"
,
implode(' ', array_map(function($v) {
return date('H:i', $v);
}, $day))
,
"\n";