在PHP版本5.6.33上工作,我需要遍历给定数组的每个成员,但有以下限制:
1)需要从定义的索引而不是0索引或数组的第一个成员开始进行迭代。
2)需要迭代给定的次数,而不是遍历整个数组,而是遍历数组成员直到达到给定的次数。
这里是一个例子:
$arr = array(0,0,0,0,0,0);
$repetitions = 10;
$startingIndex = 3;
function add($value, 1) {
return $value + 1;
}
遍历每个数组成员,从索引3开始10次,向每个数组成员加1:
0 => 0
1 => 0
2 => 0
3 => 0 + 1
4 => 0 + 1
5 => 0 + 1
6 => 0 + 1
在这里我走了4次,还剩下6个:
0 => 0 + 1
1 => 0 + 1
2 => 0 + 1
3 => 0 + 1 + 1
4 => 0 + 1 + 1
5 => 0 + 1 + 1
6 => 0 + 1
所以最终结果是:
0 => 1
1 => 1
2 => 1
3 => 2
4 => 2
5 => 2
6 => 1
我显然已经做好了工作,并尝试了 array_map , array_walk , foreach ,列表,每个(不建议使用),但是在阅读PHP手册时,我发现这些功能旨在影响“每个”数组成员。相反,我需要影响一些数组成员。
答案 0 :(得分:1)
要从一个特定的偏移量开始遍历一个数组,您需要一个循环来重置索引:
function increment(& $arr, $idx, $times) {
for ($i = 0, $p = $idx; $i < $times; ++$i) {
$arr[$p++] += 1;
if ($p == count($arr)) {
$p = 0;
}
}
}
$arr = array(0,0,0,0,0,0);
increment($arr, 3, 10);
var_dump($arr);
答案 1 :(得分:0)
尝试一下:
function add($array,$start,$elements,$add) {
for($i = $start; $i < $start + $elements; $i++) {
$array[$i] += $add;
}
return $array ;
}