即使奇数,也会在2列中生成数组结果

时间:2013-05-28 15:44:06

标签: php

我正在尝试将我的数组返回两列。当结果数是偶数时,它正在工作,但不是奇数。当结果为奇数时,它会将所有结果保留在左ul但不是右ul

如何更改代码,以便在有余数的情况下,将奇数个结果放入第二列?

<?php 
$terms = get_field('featured_cities');
echo '<ul>';
$i =0;
foreach ($terms as $term) {
  echo '<li><a href="'.get_term_link($term->slug, 'cities').'">'.$term->name.'</a></li>';
  $i++;
  if((int)sizeof($terms)/2 == $i){
     echo '</ul><ul>';
  }
}
echo '</ul>';
?>

2 个答案:

答案 0 :(得分:0)

这是因为如果$terms的大小为奇数,则您错过了开始<ul>标记。

答案 1 :(得分:0)

使用

if (ceil(count($terms)/2) == $i){

而不是

if((int)sizeof($terms)/2 == $i){

另外,考虑将ceil(sizeof($terms)/2)放在某个变量中,所以

<?php 
$terms = get_field('featured_cities');
echo '<ul>';
$i =0;
$half = ceil(count($terms) / 2);
foreach ($terms as $term) {
  echo '<li><a href="'.get_term_link($term->slug, 'cities').'">'.$term->name.'</a></li>';
  $i++;
  if ($half == $i){
     echo '</ul><ul>';
  }
}
echo '</ul>';
?>

如果您想要第二列中的奇数,请添加$half的修复:

$cnt = count($terms);
$half = ceil($cnt / 2);
if ($cnt % 2 && $half % 2) $half--;