Как я могу выдвинуть первый элемент массива, перевернуть массив и переместить перевернутый массив с помощью PHP? - PullRequest
1 голос
/ 25 сентября 2019

Итак, я пытаюсь выучить PHP, но у меня возникают проблемы с поиском соответствующих функций.

В настоящее время я пытаюсь изменить заданный массив: $ array = ['a', 'b', 'c', 'd', 'e'];

Моя цель -нажать на элемент, обратить массив и нажать на другой элемент, пока он не достигнет длины массива.Итак, первая итерация: aedcb 2-я итерация: aebcd 3-я итерация: aebdc Кто-нибудь может порекомендовать php-функции, которые я могу найти и прочитать для достижения этой цели?Это мой текущий код, и я знаю, что есть способ просто создать функцию, перебрать массив, отфильтровать и нажать, но у меня возникают проблемы с получением правильных функций php и созданием обратной функции

Этоэто то, что у меня есть до сих пор:

<?php 
$array = ['a', 'b', 'c', 'd', 'e'];
// aedcb
// aebcd
// aebdc

$reversedArray = [];

array_push($reversedArray, $array[0]);

$rev = array_reverse($array);

array_push($reversedArray, $rev[0]);

 $rev2 = array_reverse($rev);

 array_push($reversedArray, $rev2[1]);

 $rev3 = array_reverse($rev2);
 array_push($reversedArray, $rev3[1]);

 $rev4 = array_reverse($rev3);

array_push($reversedArray, $rev4[2]);

?> 

Что указывает на мою конечную цель.Но это определенно не будет работать, если дан массив или объект, содержащий больше элементов, чем мой текущий массив.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Если результат для $array = ['a', 'b', 'c', 'd', 'e']; должен быть aebdc, вы можете использовать цикл с оператором по модулю % и индексировать с левой или правой стороны в $array.

Например:

$array = ['a', 'b', 'c', 'd', 'e'];

function customReverse($array) {
    $reversedArray = [];
    $count = count($array);
    for ($i = 0; $i < count($array); $i++) {
        $reversedArray[] = $i % 2 === 0 ? $array[$i / 2] : $array[$count - ($i / 2)];
    }
    return $reversedArray;
}

print_r(customReverse($array));

Выход

Array
(
    [0] => a
    [1] => e
    [2] => b
    [3] => d
    [4] => c
)

Php demo

0 голосов
/ 25 сентября 2019

Вы на самом деле не должны полностью изменять массив.Просто удаляйте элементы один за другим, чередуя начало и конец.

$array = ['a', 'b', 'c', 'd', 'e'];

$result = [];
$takeFromBeginning = true;
while(count($array))
{
    if($takeFromBeginning) {
        $result[] = array_shift($array);
    } else {
        $result[] = array_pop($array);
    }

    $takeFromBeginning = !$takeFromBeginning;
}

print_r($result);

...