如何从任何位置开始遍历整个阵列?

时间:2016-04-11 03:22:07

标签: php arrays

所以我有一个像这样的数组:

$arr = [0, 1, 2];

现在我收到了一个用户输入,例如

$input = 1;

根据该输入,我想从该输入的位置开始遍历所有数组元素。

示例:

//Array: [0, 1, 2]
Input: 0 Output: 012
Input: 1 Output: 120
Input: 2 Output: 201

我对PHP知之甚少,所以我尝试了一个简单的for循环:

for($x = 1; $x <= 2; $x++)
{
    echo $x;
}

但显然这不起作用,所以我不得不离开这里。

2 个答案:

答案 0 :(得分:3)

所以你要做的就是创建一个ArrayIterator

然后根据您获得的输入设置迭代器的位置ArrayIterator::seek()。您可以使用array_search()轻松获得职位:

$it->seek(array_search($input, $arr));

(如果在数组array_search()中找不到输入,则返回FALSE,然后将其用作0,意味着您只需遍历数组)

然后,您可以使用从设置位置开始的for循环简单地循环遍历数组中的元素数量。如果你点击数组的末尾,你只需回放它:

//End of array?
if(!$it->valid()){
    //Start again
    $it->rewind();
}

代码

<?php

    $arr = [0, 1, 2];
    $input = 1;

    $it = new ArrayIterator($arr);
    $it->seek(array_search($input, $arr));

    for($i = 0, $length = count($arr); $i < $length; $i++){
        if(!$it->valid()){
            $it->rewind();
        }
        echo $it->current();
        $it->next();
    }

?>

输出:

120

答案 1 :(得分:-4)

foreach( [1,2,0] as $num ){
    echo $num;
}