所以我有一个像这样的数组:
$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;
}
但显然这不起作用,所以我不得不离开这里。
答案 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;
}