За последние 24 часа нас посетили 175255 программистов и 3071 робот. Сейчас ищут 1592 программиста ...

передвинуть элементы массива

Тема в разделе "PHP для новичков", создана пользователем vvsh, 13 ноя 2010.

  1. vvsh

    vvsh Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    помоги кто сделать почемуто не получается, препод сказал делать по-другому но мне не понравился его способ, решил так.

    PHP:
    1. $k = 5; // Смещение
    2.  
    3. for ($i = 1; $i < $count/2; $i++)
    4. {
    5.     if ($i + $k < $count)
    6.     {
    7.         // $array[$i] на $array[$i + $k]
    8.         $a = $array[$i];
    9.         $array[$i] = $array[$i + $k];
    10.         $array[$i + $k] = $a;
    11.     }
    12.     else
    13.     {
    14.         // $array[$i] на $array[$i + $k - $count]
    15.         $a = $array[$i];
    16.         $array[$i] = $array[$i + $k - $count];
    17.         $array[$i + $k - $count] = $a;
    18.     }
    19. }
    заранее спасибо
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    vvsh
    в смысле, куда передвинуть?какие то конкретные элементы, если смещение вверх, то куда не поместившиеся элементы девать, если вниз, то на месте верхних пусто будет?
     
  3. ridraider

    ridraider Активный пользователь

    С нами с:
    23 окт 2010
    Сообщения:
    65
    Симпатии:
    0
  4. vvsh

    vvsh Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    вот рабочий вариант.

    Код (Text):
    1. $array = array(0, 1, 2, 3, 4);
    2. $count = count($array);
    3. $k = 3; // Смещение
    4.    
    5. for ($j = 1; $j <= $k; $j++)
    6. {
    7.     $e = $array[0];
    8.    
    9.     for ($i = 1; $i < $count; $i++)
    10.     {
    11.         $array[$i - 1] = $array[$i];
    12.     }
    13.    
    14.     $array[$count - 1] = $e;
    15. }