2010-12-08 137 views
3

再次原谅我的noobness。我有一个数组,其中有20个以上的值,我将每20个数据库放在我的数据库中,然后将它们从阵列的前面切下。我想重新启动数组的索引返回到0,而是从20开始,即使我使用array_values。我也试过array_merge(array(),$ string)该怎么办?PHP重新索引数组?

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) 

回答

12

我通常做的:

$array = array_values($array); 

看起来就像你大部分的方式出现 - 只是忘到新阵列,以旧变量分配。

+0

想我今晚太多了编程。非常感谢你 – Chenelle 2010-12-09 00:36:40

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 
} 

OR,布拉德建议更换:

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! 

有:

for($y=0;$y<20; $y++) 
    array_shift($string); 
0

我想有一个看看array_shift。当你从阵列中“弹出”它们时,这可能会做你正在寻找的东西。

编辑

而且,只要你处理数组和循环,这是一个好主意,让一个事实,即该阵列可以拿出短的良心。也就是说,我强烈建议不要编码固定for(... <20 ...)但使用一个变量如$end = (count($array) < 20 ? count($array) : 20);