2009-12-05 29 views
4

我有時最終會在數組中啓動數據,這些數據遠在數組中,例如位置25而不是0。清理一個PHP數組,使其再次基於0

實施例:

Array 
(
    [16] => Array 
     (
      [0] => http://rapidshare.com/files/268123830/hmh.fo3-oks.part01.rar 
      [1] => Marked as illegal 
     ) 

    [17] => Array 
     (
      [0] => http://rapidshare.com/files/268124204/hmh.fo3-oks.part02.rar 
      [1] => Marked as illegal 
     ) 

    [18] => Array 
     (
      [0] => http://rapidshare.com/files/268127882/hmh.fo3-oks.part03.rar 
      [1] => Marked as illegal 
     ) 
) 

這是因爲所述用戶輸入的,而不是我的編碼。我需要一種方法來清理數組,以某種方式使它再次基於0。上面的例子應該是這樣的清理後:

Array 
(
    [0] => Array 
     (
      [0] => http://rapidshare.com/files/268123830/hmh.fo3-oks.part01.rar 
      [1] => Marked as illegal 
     ) 

    [1] => Array 
     (
      [0] => http://rapidshare.com/files/268124204/hmh.fo3-oks.part02.rar 
      [1] => Marked as illegal 
     ) 

    [2] => Array 
     (
      [0] => http://rapidshare.com/files/268127882/hmh.fo3-oks.part03.rar 
      [1] => Marked as illegal 
     ) 
) 

,所以我可以有效地循環儘管每個陣列元素,並將其輸出給用戶。

任何關於如何清理這個數組的幫助將會很有用,謝謝。 :)

+0

我看不出有什麼區別 – streetparade 2009-12-05 17:30:18

回答

7

使用array_values()。它放棄所有鍵並返回一個從零開始的數組,同時保持項目的相對順序。

2

你可以使用array_values得到數組的值,與該會從0開始鍵:

array array_values (array $input ) 

array_values()返回所有從輸入數組的 值和 指標數值數組。

在你的情況,例如:

$a = array(
    16 => array(
     'http://rapidshare.com/files/268123830/hmh.fo3-oks.part01.rar', 
     'Marked as illegal' 
    ), 
    17 => array(
     'http://rapidshare.com/files/268123830/hmh.fo3-oks.part02.rar', 
     'Marked as illegal' 
    ), 
    18 => array(
     'http://rapidshare.com/files/268123830/hmh.fo3-oks.part03.rar', 
     'Marked as illegal' 
    ), 
); 
$b = array_values($a); 
var_dump($b); 

會得到你:

array 
    0 => 
    array 
     0 => string 'http://rapidshare.com/files/268123830/hmh.fo3-oks.part01.rar' (length=60) 
     1 => string 'Marked as illegal' (length=17) 
    1 => 
    array 
     0 => string 'http://rapidshare.com/files/268123830/hmh.fo3-oks.part02.rar' (length=60) 
     1 => string 'Marked as illegal' (length=17) 
    2 => 
    array 
     0 => string 'http://rapidshare.com/files/268123830/hmh.fo3-oks.part03.rar' (length=60) 
     1 => string 'Marked as illegal' (length=17) 
+0

謝謝。我似乎記得一個功能,當我想到這個問題時,我想要什麼,但是我無法在php.net上找到它。再次感謝:) – Joseph 2009-12-05 16:53:08

+0

不客氣:-)玩得開心! – 2009-12-05 16:53:27

0

array_values()是正確答案由其他的答案提供您的具體問題,但你做不需要這樣做就可以簡單地循環並輸出給用戶。只需使用一個foreach

<?php foreach($your_array as $item): ?> 
    <div class='item'> 
    <?php echo $item[0] ?> 
    </div> 
<?php endforeach; ?>