2011-03-29 18 views
38

tengo una matriz:PHP conseguir los 3 últimos elementos de una matriz

[13] => Array 
     (
      [0] => joe 
      [1] => 0 

    [14] => Array 
     (
      [0] => bob 
      [1] => 0 
     ) 

    [15] => Array 
     (
      [0] => sue 
      [1] => 0 
     ) 

    [16] => Array 
     (
      [0] => john 
      [1] => 0 
     ) 

    [17] => Array 
     (
      [0] => harry 
      [1] => 0 
     ) 

    [18] => Array 
     (
      [0] => larry 
      [1] => 0 
     ) 

¿Cómo puedo obtener los últimos 3 elementos preservando al mismo tiempo las teclas? (El número de elementos de la matriz puede variar, por lo que no se puede simplemente cortar después de que el segundo elemento)

lo que la salida sería:

[16] => Array 
     (
      [0] => john 
      [1] => 0 
     ) 

    [17] => Array 
     (
      [0] => harry 
      [1] => 0 
     ) 

    [18] => Array 
     (
      [0] => larry 
      [1] => 0 
     ) 

Respuesta

84

Si desea conservar la llave, se puede pasar al más puro como el cuarto argumento:

array_slice($a, -3, 3, true); 
+2

¡Gracias! No sabía que array_slice() tenía un cuarto argumento. – alex

4

Usted puede utilizar array_slice con el offset como -3 por lo que don' También debe preocuparse por la longitud de la matriz estableciendo el parámetro preserve_keys en TRUE.

$arr = array_slice($arr,-3,3,true);            
27

Uso array_slice:

$res = array_slice($array, -3, 3, true); 
+0

Esto no conserva las claves, restablece las claves a partir de 0 – alex

+0

@alex actualizó mi respuesta, gracias por la corrección. – fabrik

-3

Puede utilizar array_slice():

<?php 
    // -3 = start from the end 
    // true = preserve_keys 
    $result = array_slice($array, 0, -3, true); 
?> 
+0

Esto no hace lo que se requiere. Un entero negativo en el tercer parámetro significa "detener estos muchos elementos antes del final de la matriz". Esto devolverá los primeros elementos n-3, donde n es la cantidad total de elementos en la matriz. – tremby

Cuestiones relacionadas