2010-12-08 170 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);