【问题标题】:Skip Step if value not matching in foreach loop + php如果值在 foreach 循环 + php 中不匹配,则跳过步骤
【发布时间】:2019-07-17 06:00:01
【问题描述】:

我必须根据 th 值匹配显示 td 值。在下表中,有月份日期。在$monthdays 中,我得到月份天数,在$listmonthdisplay 中,我得到月份的所有日期。
$employeeDetail 数组中,我得到月份日期。在表中我正在执行 foreach 以显示 attendence_date 如果 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>

【问题讨论】:

  • 你的问题不清楚@Devendra
  • 你能告诉我们你的预期结果吗?
  • @Siddharthaesunuri 我已经添加了完整的代码。请检查给我建议。
  • @M.Hemant 我已经添加了我的完整代码。请检查给我建议。

标签: php html php-7 php-5.6


【解决方案1】:

我对其进行了编辑,现在可以正常使用了。

<?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中更改搜索日期的条件

【讨论】:

  • 得到与以前相同的结果(当前结果)我需要我显示的预期结果。
  • 编译你的代码,添加所有带有键和值的数组变量。@Devendra
  • 我已经添加了我的完整代码。请检查给我建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多