PHP foreach有条件

时间:2013-08-12 22:48:03

标签: php

<? foreach ($cases as $case) :?>
<? if (isset($case['case_status']) && ($case['case_status'] == 'Incomplete')) :?>
<div>
    <div class="alert alert-error">    
        <?= $warning ?>
    </div>

如果条件满足,我试图让foreach只打印一次div。 问题是,对于满足条件的每种情况都打印div。

我尝试过使用in_array,但我认为我不理解语法。 in_array是否正确?有一个更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用标记来标记,您已经打印了div并在以下情况下添加了额外条件:

<? 
$flag = false;
foreach ($cases as $case) :?>
<? if (isset($case['case_status']) 
       && ($case['case_status'] == 'Incomplete')
       && ($flag == false)) :?>
<div>
    <div class="alert alert-error">    
        <?= $warning ?>
    </div>
    <?php $flag = true; ?>

或者,如果您不需要在该循环中执行任何操作,则可以在遇到第一个元素后将其分解。

<? 
foreach ($cases as $case) :?>
<? if (isset($case['case_status']) && ($case['case_status'] == 'Incomplete')) :?>
<div>
    <div class="alert alert-error">    
        <?= $warning ?>
    </div>
    <?php break; ?>

答案 1 :(得分:1)

<?php
  $printed = array();
  foreach ($cases as $case) :?>
<? if (!in_array( $case['case_status'] ) && isset($case['case_status']) && ($case['case_status'] == 'Incomplete')) : ?>
<div>
    <div class="alert alert-error">    
        <?= $warning ?>
    </div>
<?php
    $printed[] = $case['case_status'];
  endif;
?>

这样您就可以保存每个打印的case_status并将其与in_array进行比较。