2010-06-09 3 views
13

У меня есть массив как массивPHP удалить первый индекс массива и Переиндексирование

(
    [0] => A 
    [2] => B 
    [4] => C 
    [6] => D 
) 

Я хочу удалить первый элемент, а затем повторно индексный массив, чтобы получить выход

(
    [0] => B 
    [1] => C 
    [2] => D 
) 

Какую функцию PHP мне нужно использовать?


Update

Входной массив

Array 
(
    [0] => Array 
     (
      [0] => Some Unwanted text 
      [1] => You crazyy 
     ) 

    [2] => Array 
     (
      [0] => My belowed text 
      [1] => You crazyy 
     ) 

    [10] => Array 
     (
      [0] => My loved quote 
      [1] => You crazyy 
     ) 

) 

И выход должен быть как

Array 
(
    [0] => Array 
     (
      [0] => My belowed text 
      [1] => You crazyy 
     ) 

    [1] => Array 
     (
      [0] => My loved quote 
      [1] => You crazyy 
     ) 

) 
+0

ли вам действительно нужно индексировать? –

+0

@ Col. Shrapnel Sure –

+0

Пожалуйста, используйте ['var_export'] (http://php.net/manual/en/function.var-export.php), поэтому его легче протестировать. –

ответ

19

С array_splice.

http://www.php.net/manual/en/function.array-splice.php

 
php > print_r($input); 
Array 
(
    [0] => A 
    [2] => B 
    [4] => C 
    [6] => D 
) 
php > array_splice($input, 0, 1); 
php > print_r($input); 
Array 
(
    [0] => B 
    [1] => C 
    [2] => D 
) 

+1

Необходимо опустить третий параметр array_splice ($ input, 0) –

+2

Использовать array_splice ($ input, 1); // 1 - начальный индекс , чтобы получить этот массив ([0] => B, [1] => C, [2] => D) – sayvortana

+0

Это идеально, если вы хотите, чтобы фактический массив возвращался из функции, которая что мне нужно. Вместо использования 'array_shift', который возвращает удаленный элемент по какой-то причине, известный только для PHP Devs?!? – superphonic

32

Вы можете использовать

array_shift($array) 

Documentation for array_shift

+0

i dont think array_shift будет переиндексировать массив – lemon

+2

вы попробуете его >>>>> – User123

+0

@lemon: в руководстве указано иначе: 'Все числовые ключи массива будут изменены, чтобы начать отсчет с нуля' – intuited

2

Вы можете вырезать массив как многие многие индекса, как вы хотите

$newArray = array_splice($oldArray, $startIndex, $lengthToSlice); 
0

мы можем сделать это с array_shift(), который удалит 1-й индекс массива, и после этого использования array_values() который будет переиндексировать значения массива, поскольку я не получил ответа @ User123, попробуйте ниже одного:

<?php 
    $array = array(
       0 => "A", 
       2 => "B", 
       4 => "C", 
       6 => "D" 
      ); 
    array_shift($array); 
    $array = array_values($array); 
    echo "<pre>"; 
    print_r($array); 

Выход: проверка выходной здесь https://eval.in/837709

Array 
    (
     [0] => B 
     [1] => C 
     [2] => D 
    ) 

же для обновленного входного массива

<?php 
    $array = array(
        0 => array(
          0 => "Some Unwanted text", 
          1 => "You crazyy" 
         ), 

        2 => array(
          0 => "My belowed text", 
          1 => "You crazyy" 
         ), 

        10 => array(
          0 => "My loved quote", 
          1 => "You crazyy" 
         ) 

       ); 
    array_shift($array); 
    $array = array_values($array); 
    echo "<pre>"; 
    print_r($array); 

Выход: проверки выходной здесь https://eval.in/837711

Array 
(
    [0] => Array 
     (
      [0] => My belowed text 
      [1] => You crazyy 
     ) 

    [1] => Array 
     (
      [0] => My loved quote 
      [1] => You crazyy 
     ) 

) 
0
$array=array(
0 => 'A', 
2 => 'B', 
4 => 'C', 
6 => 'D' 
); 

unset($array[0]); 
$array = array_values($array); 
print_r($array); 

Это также другое решение этой проблемы с использованием unset

Выход:

Array 
(
    [0] => B 
    [1] => C 
    [2] => D 
) 
Смежные вопросы