排版使用classname在foreach php


typesetting use classname in foreach php

<?php
  $classNames = array('margin-2', 'margin-4', 'margin-2', 'margin-8');
  if($productCatalogs != null){
    $i = 0;
    foreach($productCatalogs as $productCatalog){
      $i++;
      if($i % 2 == 0){
        // if $i is even number
        echo '<li class="{ use classname here }"><a href="#">Link name</a></li>';
      } else {
        // if $i is odd number
        echo '<li><a href="#">Link name</a></li>';
      }
    }
  }
?>

和上面的代码一样,当$i是偶数时,我想在foreach中使用每个$classNames值,比如第一个偶数记录使用{margin-2},下一个偶数记录使用{margin-4}。

下面是我想要的代码结果

<li></li> // if record is odd number, doesn't need class name
<li class="margin-2"></li>
<li></li> // if record is odd number, doesn't need class name
<li class="margin-4"></li>
<li></li> // if record is odd number, doesn't need class name
<li class="margin-2"></li>
<li></li> // if record is odd number, doesn't need class name
<li class="margin-8"></li>
<li></li> // if record is odd number, doesn't need class name
<li class="margin-2"></li>
<li></li> // if record is odd number, doesn't need class name
<li class="margin-4"></li>
...

只需使用计数器变量作为数组中的索引,并在找到偶数时增加。另外,如果你有很多元素,你需要检查你是否到达了数组的末尾,并重置你的计数器。像这样:

    <?php
  $classNames = array('margin-2', 'margin-4', 'margin-2', 'margin-8');
  if($productCatalogs != null){
    $i = 0;
    $even_counter=0;
    foreach($productCatalogs as $productCatalog){
      $i++;
      if($i % 2 == 0){
         // if $i is even number
    echo '<li class="'.$classNames[$even_counter].'"><a href="#">Link name</a></li>';
    //when we reach the end of the array we reset our counter to 0
    $even_counter=($even_counter+1==count($classNames))?0:$even_counter+1;
      } else {
        // if $i is odd number
        echo '<li><a href="#">Link name</a></li>';
      }
    }
  }
?>