<rmcreative>

RSS

Все заметки с тегами «foreach, array, PHP»

  1. PHP: последний элемент foreach. Альтернативнвый вариант.

    3 апреля 2008

    Один вариант уже был (для сравнения его тоже приведу), теперь ещё один:

    foreach ($array as $key => $value) {
      if($value == end($array)) {
            // делаем что-либо с последним элементом...
      }
      else {
            // делаем что-либо с каждым элементом
      }
    }

    Вариант Kost

    foreach ($array as $key => $value) {
       if (!next($array)) {
            // делаем что-либо с последним элементом...
       }
       else {
           // делаем что-либо с каждым элементом
       }
    }

    edit1:

    Спасибо dkrnl. Устроил тест.

    Вариант №1 работает только если явно задать ключи:

    $array = array('1' => '1','2' => '2','3' => '3', '4'=>'4','5'=>'5');

    Вариант №2 работает только если массив передать по ссылке:

    $array = new ArrayObject(array(1,2,3,4,5));
    

    Работающий в любом случае вариант:

    $total = count($array);
    $counter = 0;
    foreach($array as $key => value){
      $counter++;
      if($counter == $total){
        // делаем что-либо с последним элементом...
      }
      else{
        // делаем что-либо с каждым элементом
      }
    }

    edit2:

    А ведь и правда стало смахивать на for :) Неудобство в том, что при обращении к элементу в случае с for придётся использовать индекс.

    edit3:

    Неплохое решение DeadLy:

    $end_element = array_pop($array);
    foreach ($array as $value) {
       // делаем что-либо с каждым элементом
    }
       // делаем что-либо с последним элементом $end_element
    41 комментарий
  2. PHP: последний элемент foreach

    7 сентября 2007

    Всё гениальное просто:

    foreach ($array as $key => $value) {
       // делаем что-либо с каждым элементом
       if (!next($array)) {
            // делаем что-либо с последним элементом...
        }
    }

    Спасибо говорим Kost-у.

    Комментировать