例如我有一个数组:
$array = array(25, 50, 75, 100); // I get an array of some numbers
$position = 50; // I get some value to start with
$limit = 3; // I need to fill another array with 3 next values from the starting position
现在我需要使用什么代码来填充新数组:
$new_array = array(75, 100, 25); // the start position is 50, but I need the next 3
任何想法??
答案 0 :(得分:2)
您可以使用array_search查找数组中关键字的位置。 % arithmetic operator在到达结束后前往第一个元素。休息是你的逻辑。
<?php
$array = array(25, 50, 75, 100);
$position = 10;
$limit = sizeof($array)-1;
$pos = array_search($position, $array);;
if(!($pos === false))
{
for($i=0;$i<$limit;$i++)
{
$pos = (($pos+1)%sizeof($array));
echo $array[$pos]."<br>";
}
}
else
{
echo "Not Found";
}
?>
答案 1 :(得分:2)
我喜欢有抽象逻辑的功能。所以我建议编写一个函数,它接受数组,开始的位置和限制:
<?php
function loop_array($array,$position,$limit) {
//find the starting position...
$key_to_start_with = array_search($position, $array);
$results = array();
//if you couldn't find the position in the array - return null
if ($key_to_start_with === false) {
return null;
} else {
//else set the index to the found key and start looping the array
$index = $key_to_start_with;
for($i = 0; $i<$limit; $i++) {
//if you're at the end, start from the beginning again
if(!isset($array[$index])) {
$index = 0;
}
$results[] = $array[$index];
$index++;
}
}
return $results;
}
现在你可以使用你想要的任何值来调用函数,例如:
$array = array(25, 50, 75, 100);
$position = 75;
$limit = 3;
$results = loop_array($array,$position,$limit);
if($results != null) {
print_r($results);
} else {
echo "The array doesn't contain '{$position}'";
}
输出
Array
(
[0] => 75
[1] => 100
[2] => 25
)
或者您可以使用任何其他值循环它:
$results = loop_array(array(1,2,3,4,5), 4, 5);
以下是一个有效的例子:http://codepad.org/lji1D84J
答案 2 :(得分:1)
您可以使用array_slice()和array_merge()来实现目标。
让我们说你知道50的位置是2。
然后你可以通过 -
获得一个新数组array_slice(array_merge(array_slice($array, 2), array_slice($array, 0, 2)), 3);
基本上,你从起始位置得到两个子数组,连接在一起,然后删除拖尾部分。