2010-06-09 13 views
13

tengo una matriz como matrizPHP quitar el primer índice de un array y volver a indexar

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

Quiero quitar el primer elemento y luego volver a índice de la matriz para obtener la salida

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

¿Qué función de PHP necesito usar?


actualización

matriz de entrada es

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 
     ) 

) 

Y la salida debe ser como

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

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

) 
+0

¿Está realmente necesita para indexar? –

+0

@ Col. Shrapnel Sure –

+0

Utilice ['var_export'] (http://php.net/manual/en/function.var-export.php) para que sea más fácil de probar. –

Respuesta

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

Necesita omitir el tercer parámetro array_splice ($ input, 0) –

+2

Usar array_splice ($ input, 1); // 1 es el índice de inicio para obtener esta matriz ([0] => B, [1] => C, [2] => D) – sayvortana

+0

Esto es perfecto si desea la matriz real devuelta por la función, que es lo que necesitaba ¿En lugar de utilizar 'array_shift' que devuelve el elemento eliminado por alguna razón conocida solo por los desarrolladores PHP?!? – superphonic

32

Usted puede utilizar

array_shift($array) 

Documentation for array_shift

+0

no creo que array_shift reindexe la matriz – lemon

+2

lo intente >>>>> – User123

+0

@lemon: el manual dice lo contrario: 'Todas las teclas de matriz numérica se modificarán para comenzar a contar desde cero' – intuited

2

Puede cortar la matriz como muchos muchos índice que desee

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

podemos hacerlo con array_shift() que eliminará el primero índice de la matriz y después de que el uso array_values() que volverá a indexar los valores de la matriz, ya que no obtuve la respuesta de @ User123, pruebe debajo de uno:

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

Salida: comprobar la salida de aquí https://eval.in/837709

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

Lo mismo para la matriz de entrada Actualizado

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

Salida: comprobar la salida de aquí 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); 

Ésta es también otra solución a este problema usando unset

Salida:

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