实际上我有三个foreach循环。我想在第三个foreach循环值($ val == $ test)匹配时跳过第二个foreach循环。 这是我的代码。
<tbody>
<?php foreach ($tests as $test): ?>
<tr>
<td><?= $test; ?></td>
<?php foreach ($room as $key => $value): ?>
<?php foreach ($value['dates'] as $val) : ?>
<?php if ($val == $test) { ?>
<td><span class="text-danger"><?= $value['room_id'];?</span></td>
<?php } ?>
<?php endforeach; ?>
<td><span class="text-custom"><?= $value['room_id']; ?></span></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
答案 0 :(得分:0)
<tbody>
<?php foreach ($tests as $test): ?>
<tr>
<td><?= $test; ?></td>
<?php
$bool = FALSE;
foreach ($room as $key => $value):
?>
<?php foreach ($value['dates'] as $val) : ?>
<?php if ($val == $test) { ?>
<td><span class="text-danger"><?= $value['room_id']; ?></span></td>
<?php
$bool = TRUE;
break;
}
?>
<?php endforeach; ?>
<td><span class="text-custom"><?= $value['room_id']; ?></span></td>
<?php
if ($bool) {
continue;
}
endforeach;
?>
</tr>
<?php
endforeach;
?>
使用此代码我基于第三个循环条件在第二个循环上应用了 Break; 。希望这对您有用
答案 1 :(得分:0)
您可以使用continue
。如果你想跳过嵌套循环,那么你可以写continue
n
,其中n是你想要跳过的嵌套循环的数量。
continue
会跳过迭代。
break
将结束循环。
答案 2 :(得分:0)
我仍然认为你不需要第三个循环。您可以删除它并将其替换为in_array()
,然后根据结果更改类名。
<tbody>
<?php foreach ($tests as $test): ?>
<tr>
<td><?= $test; ?></td>
<?php
foreach ($room as $key => $value):
$class = "text-custom";
if(in_array($test, $value['dates']) {
$class = "text-danger";
}
<td><span class="<?php echo $class; ?>"><?= $value['room_id'];?</span></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
几点 - 您可以使用三元if
语句使其更清洁 - 并且在使用短标签(<?= ?>
)时也要小心,因为服务器并不总是支持它们。