如果值在 foreach 循环中不匹配则跳过步骤 + php
Skip Step if value not matching in foreach loop + php
我必须根据 th 值匹配显示 td 值。在下面的 table 中有 th 有月份日期。在 $monthdays
中,我得到了月份天数,在 $listmonthdisplay
中,我得到了月份的所有日期。
在 $employeeDetail
数组中,我得到了月份日期。在 table 中,如果 attendence_date 等于 $listmonthdisplay
但是当 $employeeDetail
数组中缺少任何日期时,循环将失败或无法继续。这里如何正确映射 tb 值?
$monthdays=28;
$listmonthdisplay=[
"0"=>"01-02-2019",
"1"=>"02-02-2019",
"2"=>"03-02-2019",
"3"=>"04-02-2019",
"4"=>"05-02-2019", ............"28"=>"05-02-2019"
]
$employeeDetail=[
"0"=>["attendence_date"=>"01-02-2019"],
"1"=>["attendence_date"=>"02-02-2019"],
"2"=>["attendence_date"=>"05-02-2019"],
"3"=>["attendence_date"=>"08-02-2019"],
"5"=>["attendence_date"=>"09-02-2019"]
]
<table>
<tr>
<?php for($i=0;$i<$monthdays;$i++){ ?>
<th><?php echo $listmonthdisplay[$i]?></th>
<?php }?>
</tr>
<tr>
<?php for($i=0;$i<$monthdays;$i++){ ?>
<td>
<?php
if((isset($employeeDetail[$i]) && $listmonthdisplay[$i]==$employeeDetail[$i]['attendence_date']){
echo $employeeDetail[$i]['attendence_date'];
}?>
</td>
<?php }?>
</tr>
</table>
Current output:
<table>
<tr>
<th>01-02-2019</th>
<th>02-02-2019</th>
<th>03-02-2019</th>
<th>04-02-2019</th>
<th>05-02-2019</th>
<th>06-02-2019</th>
<th>07-02-2019</th>
<th>08-02-2019</th>
<th>09-02-2019</th>........<th>28-02-2019</th>
</tr>
<tr>
<td>01-02-2019</td>
<td>02-02-2019</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>.......<td></td>
</tr>
</table>
Expected output:
<table>
<tr>
<th>01-02-2019</th>
<th>02-02-2019</th>
<th>03-02-2019</th>
<th>04-02-2019</th>
<th>05-02-2019</th>
<th>06-02-2019</th>
<th>07-02-2019</th>
<th>08-02-2019</th>
<th>09-02-2019</th>
</tr>
<tr>
<td>01-02-2019</td>
<td>02-02-2019</td>
<td></td>
<td></td>
<td>05-02-2019</td>
<td></td>
<td></td>
<td>08-02-2019</td>
<td>09-02-2019</td>.......<td></td>
</tr>
</table>
我对其进行了编辑,现在可以使用了。
<?php
$monthdays=28;
$listmonthdisplay=[
"0"=>"01-02-2019",
"1"=>"02-02-2019",
"2"=>"03-02-2019",
"3"=>"04-02-2019",
"4"=>"05-02-2019",
"5"=>"06-02-2019",
"6"=>"07-02-2019",
"7"=>"08-02-2019",
"8"=>"09-02-2019",
"9"=>"10-02-2019",
"10"=>"11-02-2019",
"11"=>"12-02-2019"
...
];
$employeeDetail=[
"0"=>["attendence_date"=>"01-02-2019"],
"1"=>["attendence_date"=>"02-02-2019"],
"2"=>["attendence_date"=>"05-02-2019"],
"3"=>["attendence_date"=>"08-02-2019"],
"5"=>["attendence_date"=>"09-02-2019"]
];
$tmpArray = array_column($employeeDetail, 'attendence_date');
?>
<table>
<tr>
<?php
for($i=0;$i<$monthdays;$i++){
echo "<th>".$listmonthdisplay[$i]."</th>";
}
?>
</tr>
<tr>
<?php
for($i=0;$i<$monthdays;$i++){
echo "<td>";
if(in_array($listmonthdisplay[$i], $tmpArray)){
echo $listmonthdisplay[$i];
}
echo "</td>";
}
?>
</tr>
</table>
我改变了两个东西,现在可以正常工作了
首先添加这段代码:
$tmpArray = array_column($employeeDetail, 'attendence_date');
获取要打印的一维日期数组
第二个是更改条件以在 $tmpArray
中搜索日期
我必须根据 th 值匹配显示 td 值。在下面的 table 中有 th 有月份日期。在 $monthdays
中,我得到了月份天数,在 $listmonthdisplay
中,我得到了月份的所有日期。
在 $employeeDetail
数组中,我得到了月份日期。在 table 中,如果 attendence_date 等于 $listmonthdisplay
但是当 $employeeDetail
数组中缺少任何日期时,循环将失败或无法继续。这里如何正确映射 tb 值?
$monthdays=28;
$listmonthdisplay=[
"0"=>"01-02-2019",
"1"=>"02-02-2019",
"2"=>"03-02-2019",
"3"=>"04-02-2019",
"4"=>"05-02-2019", ............"28"=>"05-02-2019"
]
$employeeDetail=[
"0"=>["attendence_date"=>"01-02-2019"],
"1"=>["attendence_date"=>"02-02-2019"],
"2"=>["attendence_date"=>"05-02-2019"],
"3"=>["attendence_date"=>"08-02-2019"],
"5"=>["attendence_date"=>"09-02-2019"]
]
<table>
<tr>
<?php for($i=0;$i<$monthdays;$i++){ ?>
<th><?php echo $listmonthdisplay[$i]?></th>
<?php }?>
</tr>
<tr>
<?php for($i=0;$i<$monthdays;$i++){ ?>
<td>
<?php
if((isset($employeeDetail[$i]) && $listmonthdisplay[$i]==$employeeDetail[$i]['attendence_date']){
echo $employeeDetail[$i]['attendence_date'];
}?>
</td>
<?php }?>
</tr>
</table>
Current output:
<table>
<tr>
<th>01-02-2019</th>
<th>02-02-2019</th>
<th>03-02-2019</th>
<th>04-02-2019</th>
<th>05-02-2019</th>
<th>06-02-2019</th>
<th>07-02-2019</th>
<th>08-02-2019</th>
<th>09-02-2019</th>........<th>28-02-2019</th>
</tr>
<tr>
<td>01-02-2019</td>
<td>02-02-2019</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>.......<td></td>
</tr>
</table>
Expected output:
<table>
<tr>
<th>01-02-2019</th>
<th>02-02-2019</th>
<th>03-02-2019</th>
<th>04-02-2019</th>
<th>05-02-2019</th>
<th>06-02-2019</th>
<th>07-02-2019</th>
<th>08-02-2019</th>
<th>09-02-2019</th>
</tr>
<tr>
<td>01-02-2019</td>
<td>02-02-2019</td>
<td></td>
<td></td>
<td>05-02-2019</td>
<td></td>
<td></td>
<td>08-02-2019</td>
<td>09-02-2019</td>.......<td></td>
</tr>
</table>
我对其进行了编辑,现在可以使用了。
<?php
$monthdays=28;
$listmonthdisplay=[
"0"=>"01-02-2019",
"1"=>"02-02-2019",
"2"=>"03-02-2019",
"3"=>"04-02-2019",
"4"=>"05-02-2019",
"5"=>"06-02-2019",
"6"=>"07-02-2019",
"7"=>"08-02-2019",
"8"=>"09-02-2019",
"9"=>"10-02-2019",
"10"=>"11-02-2019",
"11"=>"12-02-2019"
...
];
$employeeDetail=[
"0"=>["attendence_date"=>"01-02-2019"],
"1"=>["attendence_date"=>"02-02-2019"],
"2"=>["attendence_date"=>"05-02-2019"],
"3"=>["attendence_date"=>"08-02-2019"],
"5"=>["attendence_date"=>"09-02-2019"]
];
$tmpArray = array_column($employeeDetail, 'attendence_date');
?>
<table>
<tr>
<?php
for($i=0;$i<$monthdays;$i++){
echo "<th>".$listmonthdisplay[$i]."</th>";
}
?>
</tr>
<tr>
<?php
for($i=0;$i<$monthdays;$i++){
echo "<td>";
if(in_array($listmonthdisplay[$i], $tmpArray)){
echo $listmonthdisplay[$i];
}
echo "</td>";
}
?>
</tr>
</table>
我改变了两个东西,现在可以正常工作了
首先添加这段代码:
$tmpArray = array_column($employeeDetail, 'attendence_date');
获取要打印的一维日期数组
第二个是更改条件以在 $tmpArray