Цикл массива начинается с середины - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть следующий массив:

$alphabet = array("a","b","c","d","e","f","g")

Если бы я хотел начать с "d" и перебрать массив для вывода в виде d,e,f,g,a,b,c.

Как этого достичь?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Вы можете попробовать использовать функцию array_slice , чтобы добиться того, что вы хотите:

<?php
$alphabet = array("a","b","c","d","e","f","g");

// find the index of the start element in the original array
$index = array_search("d", $alphabet);

// iterate the array from starting point to the end
foreach (array_slice($alphabet, $index) as $value) {
    echo $value, ",";
}

// iterate the array from the very beginning to the starting point
foreach (array_slice($alphabet, 0, $index) as $value) {
    echo $value, ",";
}
0 голосов
/ 28 декабря 2018
<?php
$alphabet = array("a","b","c","d","e","f","g");
$startIndex = 3;// index of d
$count = count($alphabet);
for($x = 0; $x < count($alphabet); $x++){
    $index = $x + $startIndex < $count  ? $x + $startIndex :  $x + $startIndex -  $count;
    echo $alphabet[$index];
}

выходы

defgabc

см. live demo

, если вы не знаете индексэлемент, который вы хотите использовать, вы можете использовать array_search

$startIndex = array_search('d', $alphabet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...