2010-06-09 2 views
13

Ho un array come ArrayPHP rimuovere il primo indice di un array e ri-index

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

voglio rimuovere il primo elemento e poi matrice ri-index per ottenere il risultato

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

Quale funzione PHP devo usare?


Aggiornamento

matrice di ingresso è

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 
     ) 

) 

E l'uscita dovrebbe essere come

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

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

) 
+0

Sei davvero bisogno di reindicizzare? –

+0

@ Col. Shrapnel Sure –

+0

Si prega di utilizzare ['var_export'] (http://php.net/manual/en/function.var-export.php) quindi è più facile da testare. –

risposta

19

Con 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

È necessario omettere il terzo parametro array_splice ($ input, 0) –

+2

Utilizzare array_splice ($ input, 1); // 1 è indice iniziale per ottenere questo array ([0] => B, [1] => C, [2] => D) – sayvortana

+0

Questo è perfetto se si desidera che l'array effettivo venga restituito dalla funzione, che è quello di cui avevo bisogno. Piuttosto che usare 'array_shift' che restituisce l'elemento rimosso per qualche motivo noto solo agli sviluppatori PHP?!? – superphonic

32

È possibile utilizzare

array_shift($array) 

Documentation for array_shift

+0

non penso array_shift reindicizzerebbe l'array – lemon

+2

lo provi >>>>> – User123

+0

@lemon: il manuale dice diversamente: 'Tutti i tasti degli array numerici saranno modificati per iniziare il conteggio da zero' – intuited

2

È possibile tagliare l'array come molti molti indice di come si desidera

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

possiamo farlo con array_shift() che rimuoverà il primo indice della matrice e dopo che l'uso array_values() che indicizzerà nuovamente i valori dell'array come non ho ricevuto dalla risposta di @ User123, prova di seguito uno:

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

uscita: controllo l'uscita qui https://eval.in/837709

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

stesso per il vostro Aggiornato matrice di ingresso

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

uscita: controllo l'uscita qui 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); 

Questa è anche un'altra soluzione a questo problema utilizzando unset

uscita:

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