Очистка массива PHP, чтобы снова сделать его 0 - PullRequest
4 голосов
/ 05 декабря 2009

Иногда я получаю данные в массиве, который начинается далеко в массиве, например, в позиции 25 вместо 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
        )
)

Так что я могу эффективно зациклить каждый элемент массива и вывести его пользователю.

Любая помощь в том, как бы я очистил этот массив, была бы полезна, спасибо. :)

Ответы [ 3 ]

7 голосов
/ 05 декабря 2009

Использовать array_values ​​() . Он отбрасывает все ключи и возвращает нулевой массив, сохраняя относительный порядок элементов.

2 голосов
/ 05 декабря 2009

Вы можете использовать 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 голосов
/ 05 декабря 2009

array_values() является правильным ответом на ваш точный вопрос, как это предусмотрено другими ответами, но вам не нужно делать это, чтобы просто зациклить и вывести на экран пользователя. Просто используйте foreach :

<?php foreach($your_array as $item): ?>
    <div class='item'>
    <?php echo $item[0] ?>
    </div>
<?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...