2010-06-09 11 views
13

Mam tablicę jak ArrayPHP usunąć pierwszy indeks tablicy i re-index

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

Chcę usunąć pierwszy element, a następnie tablicę ponownie indeksu, aby uzyskać dane wyjściowe

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

Którą funkcję PHP muszę użyć?


Aktualizacja

tablica wejściowa jest

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 
     ) 

) 

a wyjście powinno być jak

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

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

) 
+0

Czy naprawdę trzeba reindex? –

+0

@ Col. Shrapnel Sure –

+0

Użyj ['var_export'] (http://php.net/manual/en/function.var-export.php), aby łatwiej go było przetestować. –

Odpowiedz

19

Z 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

Trzeba pominąć trzeci parametr array_splice ($ input, 0) –

+2

Użyj array_splice ($ input, 1); // 1 to indeks początkowy , aby uzyskać tę tablicę ([0] => B, [1] => C, [2] => D) – sayvortana

+0

Jest to idealne, jeśli chcesz zwrócić rzeczywistą tablicę z funkcji, która jest czego potrzebowałem. Zamiast używać 'array_shift', który zwraca usunięty element z jakiegoś powodu znanego tylko PHP Devs?!? – superphonic

32

Można użyć

array_shift($array) 

Documentation for array_shift

+0

Nie sądzę, aby array_shift ponownie wyindeksowało tablicę – lemon

+2

spróbuj >>>>> – User123

+0

@lemon: instrukcja mówi inaczej: 'Wszystkie numeryczne klucze tablicy zostaną zmodyfikowane, aby rozpocząć odliczanie od zera' – intuited

2

Można wyciąć tablicę jak wiele wiele indeks jak chcesz

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

możemy to zrobić z array_shift() który usunie 1st indeks tablicy i po tym stosowania array_values() który ponownie zindeksuje wartości tablic, ponieważ nie uzyskałem odpowiedzi @ User123, spróbuj poniżej:

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

wyjściowa: sprawdzić wyjście tutaj https://eval.in/837709

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

samo dla zaktualizowaną tablicy wejście

<?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); 

wyjściowa: sprawdzić wyjście tutaj 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); 

Jest też inne rozwiązanie tego problemu przy użyciu unset

wyjściowa:

Array 
(
    [0] => B 
    [1] => C 
    [2] => D 
) 
Powiązane problemy