我有每位员工的出勤日志,该员工可能只有几天的时间。我想显示给定日期间隔中的当前天和缺席天。
例如给定的时间间隔是:
let items = [{title:'Roundtrip: Senior Product Designer'},{title:'Frontend Developer'},{title:'Unreal is looking for a Product Designer'}]
console.log(items.map(item => {
const colonSeperated = item.title.split(':')
const phraseSeperated = item.title.split('is looking for ')
if(colonSeperated.length == 2){
return ({
company:colonSeperated[0],
title: colonSeperated[1].trim(' ')
})
}
else if(phraseSeperated.length ==2){
const phraseSeperatedTitle =
phraseSeperated[1].startsWith('an')?
phraseSeperated[1].substr(2):phraseSeperated[1].substr(1)
return({
company:phraseSeperated[0].trim(' '),
title: phraseSeperatedTitle.trim(' ')
})
}
else {
return ({
company:null,
title:item.title
})
}
}
))
$from = "2019-03-01";
这是数据记录:
$to = "2019-03-05";
我希望输出如下:
我将以html显示输出。
[
{
"id": 1310,
"empid": 3,
"check_in": "11:56",
"check_out": "17:25",
"date": "2019-03-02",
"time_long": "5:28"
},
{
"id": 1311,
"empid": 3,
"check_in": "08:00",
"check_out": "16:00",
"date": "2019-03-04",
"time_long": "8:00"
},
...
]
答案 0 :(得分:1)
让我们假设$ input具有您指定格式的数据。
这是Json格式,因此首先需要对其进行解码。
接下来,您需要重新格式化数组,以便键是日期。
接下来,您需要将Dates更改为DateTime对象。
现在,您可以使用for循环遍历这些日期。在for循环内,您需要检查给定日期的格式数组中是否存在键。如果是,则使用它进行填充。否则,打印X。
下面是整个代码
$results = json_decode($input);
$formatResults = array();
foreach( $results as $result) {
$date = $result->date;
$formatResults[$date] = $result;
}
$from = "2019-03-01";
$to = "2019-03-05";
$begin = new DateTime( $from );
$end = new DateTime( $to );
?>
<table>
<thead>
<tr>
<th>NO</th>
<th>Date</th>
<th>Check In</th>
<th>Check Out</th>
<th>Time Long</th>
</tr>
</thead>
<tbody>
<?php
$loopCount = 0;
for($i = $begin; $i <= $end; $i->modify('+1 day')){
$loopCount++;
echo '<tr>';
echo '<td>'. $loopCount . '</td>';
echo '<td>'. $i->format("Y-m-d") . '</td>';
if( isset ( $formatResults[ $i->format("Y-m-d") ] ) ) {
echo '<td>'. $formatResults[ $i->format("Y-m-d") ]->check_in . '</td>';
echo '<td>'. $formatResults[ $i->format("Y-m-d") ]->check_out . '</td>';
echo '<td>'. $formatResults[ $i->format("Y-m-d") ]->time_long . '</td>';
} else {
echo '<td>X</td>';
echo '<td>X</td>';
echo '<td>X</td>';
}
echo '</tr>';
}
?>
</tbody>
</table>