在foreach循环中比较数组的值

3

您好,我有以下的php foreach循环:

 <?php        

  foreach ($row['row'] as $inrow) {                
  $slots_available = $inrow[2];              
  $cal_id = $inrow[3];
  $selenable=true;

          ?>

        <tr style="width: 100%;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;" class="tbody_vo_edit">

          <td class="thc_vo tblb" width="200" style="border-left: 1px dotted #CFCFCF;font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;"><?= $inrow[0] ?></td>

          <td class="thc_vo tblb" width="210" style="border-left: 1px dotted #CFCFCF;font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;"><?php if($slots_available=='H') echo ' '; else { echo $inrow[1]; } ?></td>

          <td class="thc_vo tblb " width="140" style="font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;">

        <div style="float:right;margin-top:-2px;display:<?php if($slots_available=='H') echo "none"; else echo 'block'; ?>">(<?=$users_occupied?>/<?=$slots_available?>)</div>
        </td>

        <td class="thc_vo tblb" style="width: 25%;min-width:141px;max-width:141px;padding:5px;background:<?php if($slots_available=='H') echo "rgb(235, 235, 235)"; else echo 'white'; ?>"><?php if($selenb){?><input style="display:none;" type="text" value="" class="tblinput"><?php }?></td>
        </tr>
        <?php
              }

?>

执行此代码后,会得到一个表格。我想比较第一行的$inrow [0]值和第二行的第一个值。如果这两个值不同,我想添加另一个标签。有人可以帮助我如何比较这些值吗?
例如:表格如下:
时间 | 任务 | 插槽 ------------ | ------------- | ------------- 05:00 am - 05:55 am | asdfas | 3 05:00 am - 05:55 am | asdasdfasdf | 4
从这个表格中,我想比较第一行和第二行的时间值,如果它们不相等,我想在这两行之间添加一行来表示“下一个时间段”。
提前感谢您的帮助。

也许你需要使用for而不是foreach来获取前/后索引的访问权限? - Maxim Khan-Magomedov
不,我不能在这里使用for循环... 即使我们使用foreach循环,我们也可以比较这些值,但不知道如何确切地做到这一点。 - xyz9999
2个回答

2
您可以定义一个变量来保存前一个循环的“时间”值。在每次循环中,检查当前“时间”值与上一个“时间”值是否不同,如果不同,则渲染一个额外的行。
示例代码:
$lastTime = "";
forEach (...) {
    $time = $inrow[0];
    ...
    $newSlot = strCaseCmp($time, $lastTime);
    $lastTime = $time;
    if ($newSlot) {?>
        <html_for_"new-slot"_row_goes_here...>
    <?php } ?>

    <html_for_current_timeslot_row_goes_here...>
    ...
<?php } ?>

请看这个简短演示。 (我还稍微修改了您的原始代码。)

0

首先声明一个临时变量并将其赋值为null,然后将临时变量与$inrow[2]进行比较,执行你的操作,然后将$inrow[2]分配给临时变量以进行下一次循环执行过程。

<?php        
 $temp='';  
  foreach ($row['row'] as $inrow) {                  
  $slots_available = $inrow[2];                
  $cal_id = $inrow[3];  
  $selenable=true;  
if($slots_available==$temp){  
 some code according to your need and also change the condition according to needs  
}  
   $temp=$inrow[2];  
          ?>  
        <tr style="width: 100%;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;" class="tbody_vo_edit">

          <td class="thc_vo tblb" width="200" style="border-left: 1px dotted #CFCFCF;font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;"><?= $inrow[0] ?></td>

          <td class="thc_vo tblb" width="210" style="border-left: 1px dotted #CFCFCF;font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;"><?php if($slots_available=='H') echo ' '; else { echo $inrow[1]; } ?></td>

          <td class="thc_vo tblb " width="140" style="font:11px verdana;color:#17375e;background: <?php if($slots_available=='H') echo "rgb(235,235,235)"; else echo 'white'; ?>;">

        <div style="float:right;margin-top:-2px;display:<?php if($slots_available=='H') echo "none"; else echo 'block'; ?>">(<?=$users_occupied?>/<?=$slots_available?>)</div>
        </td>

        <td class="thc_vo tblb" style="width: 25%;min-width:141px;max-width:141px;padding:5px;background:<?php if($slots_available=='H') echo "rgb(235, 235, 235)"; else echo 'white'; ?>"><?php if($selenb){?><input style="display:none;" type="text" value="" class="tblinput"><?php }?></td>
        </tr>
        <?php
              }  
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接