показать разделитель в нижней части цикла, за исключением последнего элемента - PullRequest
0 голосов
/ 06 апреля 2011

Так что я знаю, что это просто, но я некоторое время стучал головой о стену, пытаясь понять это. Я хочу показать линейку внизу моего цикла на каждом из них, кроме последнего. Я могу заставить его работать, если у меня есть точное количество записей, но нет, если у меня меньше. Например, если максимальное число для показа - 10, но есть только 5 записей, я хочу разделитель после 4-й записи. Аналогично, если есть 20 результатов, но максимум 10, я хочу его после 9-го.

        <?php $subscriberIDs = ba_getUsersByRole( 'subscriber' );
        // Loop through each user
        $i=0;
        $max = 10; //max number of results
        $total_users =count($subscriberIDs); //total number of records
        foreach($subscriberIDs as $user) : 
        if($i<=$max) : ?>

        <li>   
                       <?echo $user['data'];?>
        </li>

        <?php 
        if(($i < $total_user-1 && $max >= $total_users) || ($i < max-1 &&  $total_users <= $max)){echo "<hr>";}
    $i++;

        endif; 
        endforeach; ?

1 Ответ

2 голосов
/ 06 апреля 2011
// <hr> goes in every spot, but not on the last item, up to 10
$position = min($max-1, count($subscriberIDs)-1);
$i = 0;
foreach($subscriberIDs as $user){
   echo '<li>' . $user['data'] . '</li>';
   if($i != $position){
       echo '<hr>';
   }
   $i++;
}

Для этого требуется меньшее из $max-1 или count($subscriberIDs)-1, что по определению будет последним элементом, который вы будете повторять. Если у вас более $max предметов, то это будет $max-1, если у вас меньше $max предметов, то это будет count(.)-1.

Затем, во время итерации, оператор if печатает <hr>, пока текущий элемент не последний элемент .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...