2010-04-20 20 views
37

Supongamos que tengo esta matriz:PHP: Eliminar el primer y último elemento de la matriz

$array = array('10', '20', '30.30', '40', '50'); 

Preguntas:

¿Cuál es la manera más rápida/más fácil de eliminar el primer elemento de la anterior ¿formación?
¿Cuál es la forma más rápida/más fácil de eliminar el último elemento de la matriz anterior?

Así que la matriz resultante contiene sólo estos valores:

  • '20'
  • '30 .30'
  • '40'
+2

razón por la que necesita whay "más rápido"? ¿Cuántas cosas hay en tu matriz? –

+0

@Col. Metralla: Considere una situación donde hay más elementos en la matriz, él acaba de dar una muestra, creo. – Sarfraz

+0

Me niego a considerar tales tonterías. Las grandes matrices de datos son una preocupación de la base de datos. –

Respuesta

58

Usando array_slice es más simple

$newarray = array_slice($array, 1, -1); 

Si la matriz de entrada tiene menos de 3 elementos en ella, la matriz de salida estará vacía.

+10

Marcó esta como la respuesta correcta, pero si fuera usted, vería si realmente es así. Este comando necesita copiar una gran sección de memoria. Usar 'array_ {shift, pop}' evitará copiar esa memoria. Escriba un script donde crea una instancia de una matriz realmente grande y luego llame a su función hasta que la matriz tenga 0 (o 1) elementos. –

6

array_slice va a ser el más rápido, ya que es una llamada de función única.

que lo utilice como esto: array_slice($input, 1, -1);

Asegúrese de que la matriz tiene al menos 2 artículos en ella antes de hacer esto, sin embargo.

+0

¿No sería mejor usar -1 en lugar de count ($ input) -2? – Jeriko

+0

Sí, al principio no me di cuenta. Fijo. – ryeguy

+0

array_slice necesita crear una nueva matriz, lo que significa que es mucho más lenta que array_pop – Pacerier

9
array_pop($array); // remove the last element 
array_shift($array); // remove the first element 
49

Para retirar el primer elemento, utilice array_shift, para eliminar último elemento, utilice array_pop:

<?php  
$array = array('10', '20', '30.30', '40', '50'); 
array_shift($array); 
array_pop($array); 
+0

+1 porque me dijiste que estaba buscando algo diferente ... – idmean

5

elimina el primer elemento de la matriz, y lo devuelve:

array_shift($array); 

elimina el último elemento de la matriz, y lo devuelve:

array_pop($array); 

Si usted d haciendo a los dos al mismo tiempo ONT mente, se puede utilizar:

array_shift($array,1,-1)); 

para desprender el primer y último elemento al mismo tiempo.

Comprobar la array_push, array_pop y array_slice documentación :)

+0

Gracias por documentar los valores devueltos. –

4

Comprobar este código:

$arry = array('10', '20', '30.30', '40', '50'); 
$fruit = array_shift($arry); 
$fruit = array_pop($arry); 
print_r($arry); 
1
<?php 
$array = array("khan","jan","ban","man","le"); 
$sizeof_array = sizeof($array); 
$last_itme = $sizeof_array-1; 
//$slicearray= array_slice($array,'-'.$sizeof_array,4);// THIS WILL REMOVE LAST ITME OF ARRAY 
$slicearray = array_slice($array,'-'.$last_itme);//THIS WILL REMOVE FIRST ITEM OF ARRAY 
foreach($slicearray as $key=>$value) 
{ 
    echo $value; 
    echo "<br>"; 
} 
?> 
Cuestiones relacionadas