【问题标题】:Separately display Odd and Even array data in a foreach loop在 foreach 循环中分别显示奇数和偶数数组数据
【发布时间】:2019-01-10 03:04:30
【问题描述】:
<?php $ctr = 0; ?>
@foreach($level1['Weapons'] as $key => $header)
   @if($ctr% == 0) 
      <div class="left">
   @endif
   @if($ctr% == 1) 
      <div class="right">
   @endif
      <ul>
         <li>
            <span class="ability">{{$key}}</span><br>
            <p class="ability-desc">{{$header['desc']}}</p>
         </li>
       </ul>

       @if($ctr == 8 || $ctr == 7) 
         </div>
       @endif

       <?php $ctr++; ?>
@endforeach

数组:

 'level1' =>
    array (    
 'Weapons' =>
    array (
      'Misfortune' =>
      array (
        'desc' => 'You can make any person fall',
      ),
      'Sorrow' =>
      array (
        'desc' => 'You can make a person cry just by looking at them',
      ),
      'Stink' =>
      array (
        'desc' => 'No living person can endure your fart',
      ),
      'Harden' =>
      array (
        'desc' => 'You can make soft things hard, even water',
      ),

我有一个 foreach,它将列出数组描述中的所有项目。我的问题是我创建了一个 if 语句来将 ODD 和 EVEN 数组元素中的值分配给一个 div,该 div 将根据结果将它们分成左右两部分。我注意到结果似乎只显示在左侧。我如何重新安排或做出满足我想法的 if 语句。我希望这个问题有意义。

【问题讨论】:

  • php modulo operator - syntax 提问前最好先查看手册
  • 我建议你通过 CSS 来做到这一点,例如div:nth-child(odd) { float: left; }.

标签: php html laravel-4


【解决方案1】:

我会在你的循环中建立 2 个字符串,然后在你的循环之后将它们回显出来。自从我做 php 以来已经有一段时间了,所以可能会有一些语法错误,但你应该明白一般的想法:

<?php 
  $ctr = 0; 
  $leftLi = "";
  $rightLi = "";
  
  foreach($level1['Weapons'] as $key => $header)
  {
    if ($ctr % 2 == 0)
    {
        $leftLi += MakeLi($key, $header['desc']);
    } else {
        $rightLi += MakeLi($key, $header['desc']);
    }
    
    $ctr++;
  }
  
  function MakeLi($key, $headerText)
  {
      return "
    <li>
      <span class=\"ability\">" . $key . "</span><br>
      <p class=\"ability-desc\">" . $headerText . "</p>
    </li>";
  }
?>



<div class="left">
  <ul>
    <?php echo $leftLi; ?>
  </ul>
</div>

<div class="right">
  <ul>
    <?php echo $rightLi; ?>
  </ul>
</div>

【讨论】:

  • 这个可行,我只是做了一些调整,使其适合我的设计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 2018-01-09
相关资源
最近更新 更多