Цикл foreach визначення першого і останнього елемента масиву

Я думаю кожен веб програміст стикався з висновком красивих меню. При вирішенні даної задачі часом необхідно для першого та / або останнього елемента привласнити свої стилі. Можна звичайно просто порахувати кількість елементів у масиві і завести лічильник, але я вирішив розкрити вам два більш елегантних способу вирішення даної задачі.


Метод номер 1 (найпростіший)


foreach ($array as $key => $value) {


   // делаем что-либо с каждым элементом


   if (!next($array)) {


        // делаем что-либо с последним элементом…


    }


}


Метод номер 1 (універсальний)


$a=getArray();


/* Получаю массив из БД и прогоняю его


    через шаблон */


 


if(!empty($a)){


 


      $last_key = & get_last_key($a);


      $first_key = & get_first_key($a);


 


      foreach($a as $k => $v){


 


            // … Вывод элемента


 


            $tpl->assign(“CLASS”, ($k == $last_key ? ” class=”last”” : “”));


            /* Если элемент последний, то выводим его с классом


                class=”last”, аналогично можно сделать и для first_key */


 


            $tpl->parse(“MAIN.TOPMENU.ITEM”);


 


      } $tpl->parse(“MAIN.TOPMENU”);


 


}


 


/* Функция возвращает ключ первого элемента массива */


function &get_first_key(&$array) {


      if (!is_array($array)) return null;


      if (!count($array)) return false; // равносильно reset()


      reset($array);


      return key($array);


}


 


/* Функция возвращает ключ последнего элемента массива */


function &get_last_key(&$array) {


      if (!is_array($array)) return null;


      if (!count($array)) return false; // равносильно end()


      end($array);


      return key($array);


}

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*