在循环内打印一个内容

时间:2017-07-14 13:40:04

标签: php list codeigniter for-loop view

我需要在条件为真时显示一些信息,但问题是条件多次为真。我想做一个array(),但我不知道怎么做。

我的观点

<?php
$prev_state = '';
for ($i = 0; $i < $cont; $i++) {
$state = $list[$i]['state'];
$name = $list[$i]['name'];
   if($prev_state != $state ){
      if($state == '3'){
        echo 'Header A';
       }//state = 3 
   else {
      echo 'Headear B';
    }
  }// if
  $prev_state = $state; 
?>
<div>
Name: <?php echo $name; ?>
</div>
<?php
}// for loop
?>

在我的$list我有很多记录,变量prev_state总是有变化,

  1. 有''
  2. 有3个
  3. 有1个
  4. 再次有3个,但之前的 1 再次打印Header A,我不希望这样。
  5. 另一方面,我希望标题(A和B)第一次显示条件为真。
    示例:

    **Header A**
     - Marcus (this has state = 3)
     - Lia    (this has state = 3)
    
    **Header B** 
     - Robert (this has state = 1)
     - Loise  (this has state = 3)
     - Bob    (this has state = 1)
     - Fer    (this has state = 3)
    

    我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

我认为这是关于你的语法。你的语法就是问题。我使用了你的代码并重新编写了一个新代码,没关系。

<?php
    $prev_state = '';
    $list = array(
        array(
            'name' => 'marcus',
            'state' => 3
        ),
        array(
            'name' => 'lia',
            'state' => 3
        ),
        array(
            'name' => 'robert',
            'state' => 1
        ),
        array(
            'name' => 'loise',
            'state' => 3
        ),
        array(
            'name' => 'bob',
            'state' => 1
        ),
        array(
            'name' => 'fer',
            'state' => 3
        )
    );
    $cont = count($list);
    for ($i = 0; $i < $cont; $i++)
    {
        $state = $list[$i]['state'];
        $name = $list[$i]['name'];
        if($prev_state != $state )
        {
            if($state == '3')
            {
                echo 'Header A';
            }
            else
            {
                echo 'Headear B';
            }
        }
        $prev_state = $state; 
        echo '<div> Name: ' . $name .'</div>';
    }
?>

我认为因为你关闭标签就是问题所在。我测试过,结果还可以。

Header A
Name: marcus
Name: lia
Headear B
Name: robert
Header A
Name: loise
Headear B
Name: bob
Header A
Name: fer