再次原谅我的noobness。我有一个包含20多个值的数组,我每20个数据推入数据库,然后将它们从数组前面切掉。我想重新启动数组的索引回到0,但是即使我使用array_values,它也会从20开始。我也尝试过array_merge(array(),$ string)怎么办?
if($x%20 == 0){
var_dump($string) // original array
get_string($string, $body, $binary); //puts the 20 string into my db
for($y=0; $y <20; $y++) //done with the 20 so I'm removing them
unset($string[$y]);
array_values($string); //reindex set $string[20] to $string[0] PLEASE!
var_dump($string); // this is suppose to be reindexed
}
相反,我得到
array // original array
0 => string '----' (length=25)
1 => string '----' (length=15)
2 => string '----' (length=27)
3 => string '----' (length=22)
4 => string '----' (length=23)
5 => string '----' (length=21)
6 => string '----' (length=26)
7 => string '----' (length=23)
8 => string '----' (length=24)
9 => string '----' (length=31)
10 => string '----' (length=19)
11 => string '----' (length=22)
12 => string '----' (length=24)
13 => string '----' (length=24)
14 => string '----' (length=25)
15 => string '----' (length=12)
16 => string '----' (length=16)
17 => string '----' (length=15)
18 => string '----' (length=23)
19 => string '----' (length=15)
20 => string '----' (length=16)
21 => string '----' (length=27)
array //reindexed array? This was suppose to be [0] and [1]
20 => string '----' (length=16)
21 => string '----' (length=27)
答案 0 :(得分:12)
我通常会这样做:
$array = array_values($array);
看起来你已经完成了大部分工作 - 只是忘了将新数组分配给旧变量。
答案 1 :(得分:0)
将重建索引数组的返回值分配给它:
if($x%20 == 0){
var_dump($string) // original array
get_string($string, $body, $binary); //puts the 20 string into my db
for($y=0; $y <20; $y++) //done with the 20 so I'm removing them
unset($string[$y]);
$string = array_values($string); //reindex set $string[20] to $string[0] PLEASE!
var_dump($string); // this is suppose to be reindexed
}
或者,正如Brad建议的那样:
for($y=0; $y <20; $y++) //done with the 20 so I'm removing them
unset($string[$y]);
$string = array_values($string); //reindex set $string[20] to $string[0] PLEASE!
with:
for($y=0;$y<20; $y++)
array_shift($string);
答案 2 :(得分:0)
我会看看array_shift。当你从阵列中“弹出”它们时,这可能就是你正在寻找的东西。
修改强>
此外,无论何时处理数组和循环,最好还是要保持数组可能变短的事实。也就是说,我强烈建议不对固定for(... <20 ...)
进行编码,但使用$end = (count($array) < 20 ? count($array) : 20);
等变量