Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Осуществить циклический сдвиг элементов массива


Автор: cheburashkaRF 25.1.2014, 17:55
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо или влево на одну позицию.
Код

define("n", 10);//константа
for($i=0;$i<=n;$i++)
{    
  $arr[$i] = rand(1,10);
  $temp=$a[n];  
  echo$arr[$i]." ";//выводим массивчик для наглядности
}
echo"<br>";
for ($i=n;$i<=count($arr);$i++)
{
  $arr[$i]=$arr[$i-1];
  $arr[1]=$temp; 
}
for ($i=1;$i<=n;$i++){
  echo $arr[$i].' ';//итог
}

вот мои наработки

Автор: AJIeKceuD 28.1.2014, 14:11
как вариант:
Код

$arr = range(1, 10);
print_r($arr);

$result = array();
$i_max = count($arr);
for ($i = $i_max; $i >= 0; $i--) {
    if ( $i == 0 ) {
        $result[$i_max - 1] = $arr[$i];
    }
    else {
        $result[$i-1] = $arr[$i];
    }
}

print_r($result);


PS
там будет нотис, но я с ним уже не стал бороться

Автор: Gold Dragon 28.1.2014, 18:11
или я не понял вопрос или что-то такое

Код

$a = array('a1', 'a2', 'a3', 'a4', 'a5');

// исходный массив
print_r($a);

// сдвинутый влево
print_r(leftArray($a));

// сдвинутый вправо
print_r(rightArray($a));

/**
 * Двигаем массив вправо
 * @param array $arr
 *
 * @return array: 
 */
function rightArray($arr){
    $item = array_pop($arr);
    array_unshift($arr, $item);
    return $arr;
}

/**
 * Двигаем массив влево
 * @param array $arr
 *
 * @return array:
 */
function leftArray($arr){
    $item = array_shift($arr);
    array_push($arr, $item);
    return $arr;
}


результат:
Цитата

Array ( 
   [0] => a1 
   [1] => a2 
   [2] => a3 
   [3] => a4 
   [4] => a5 
)

Array (
   [0] => a2 
   [1] => a3 
   [2] => a4
   [3] => a5 
   [4] => a1 
)

Array (
   [0] => a5 
   [1] => a1 
   [2] => a2 
   [3] => a3 
   [4] => a4 
) 

Автор: AJIeKceuD 29.1.2014, 15:35
Gold Dragon, твой вариант лучше )

Автор: Gold Dragon 29.1.2014, 16:34
а то  smile зачем гонять массив когда есть встроенные механизмы... Странно, почему в PHP нет отдельных таких функций... наверное очень мало востребованы

Автор: _zorn_ 4.2.2014, 05:13
Хотел предложить вариант со встроенными функциями, но Gold Dragon опередил.
Сам раньше лисапеды изобретал smile В пхп много функций работы с массивами, пользуйтесь на здоровье.
http://ru2.php.net/manual/en/ref.array.php

Автор: capitan 4.2.2014, 12:03
Цитата(_zorn_ @ 4.2.2014,  05:13)
В пхп много функций работы с массивами, пользуйтесь на здоровье.
http://ru2.php.net/manual/en/ref.array.php

На php есть и русская ветка, если что. http://ru2.php.net/manual/ru/ref.array.php

Автор: _zorn_ 6.2.2014, 07:20
Цитата(capitan @  4.2.2014,  20:03 Найти цитируемый пост)
На php есть и русская ветка, если что.

Очень нужное замечание, ага. Особенно сложно перевести фразу "Change language: " справа вверху.

Есть и японская, и что ?

Автор: capitan 6.2.2014, 12:32
Цитата(_zorn_ @ 6.2.2014,  07:20)
Цитата(capitan @  4.2.2014,  20:03 Найти цитируемый пост)
На php есть и русская ветка, если что.

Очень нужное замечание, ага. Особенно сложно перевести фразу "Change language: " справа вверху.

Есть и японская, и что ?

А почему вы так уверены, что все знают английский? Мы вроде как общаемся на русскоязычном форуме, где все пишут по русски. По этому, по фэншую, нужно давать ссылку на русские доки, раз уж даете, тем более, что с недавнего времени на php.net они появились. Но это мой феншуй, вы можете делать как захотите.
P.S. Прошу прощения за offtop.

Автор: baldina 6.2.2014, 13:58
 smile 
английский как-бэ технический международный язык, специалист должен им владеть хотя бы на уровне чтения проф. литературы. бОльшая часть информации впервые появляется на английском, значительная - только на английском. на том же php.net оригинал на английском, прочие языки - переводы (разного качества)

Автор: capitan 6.2.2014, 15:54
baldina, я полностью согласен, что документацию желательно читать в первоисточнике. Я не говорил, что это не правильно, я говорил, что это удобнее для остальных. Кто захочет почитать первоисточник, почитает. smile Но, большинство таких, кто читает её на русском. И смысл размещать ссылку, если большинство её не читают? Её полезность теряется. Вот что я имел ввиду. Полезность smile

Автор: baldina 6.2.2014, 16:10
Цитата(capitan @  6.2.2014,  15:54 Найти цитируемый пост)
И смысл размещать ссылку, если большинство её не читают

ну зачем же так про большинство  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)