0
<? 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 是否正确?有一个更好的方法吗?

4

2 回答 2

1

您可以使用标志来标记您已经打印了 div 并为 if 添加额外条件:

<? 
$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; ?>
于 2013-08-12T22:54:43.717 回答
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 进行比较。

于 2013-08-12T22:56:46.980 回答