我正在尝试将我的数组返回两列。当结果数是偶数时,它正在工作,但不是奇数。当结果为奇数时,它会将所有结果保留在左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>';
?>
答案 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--;