2010-09-15 17 views
139

¿Cuál es la mejor manera de lograr esto?¿Obtiene los primeros N elementos de una matriz?

+7

si alguna vez necesita encontrar una función para hacer algo con una matriz, vaya aquí: http://www.php.net/manual/en/function.array.php y mire a través de las funciones. – Galen

+12

en lugar de venir a SO!? –

Respuesta

248

Uso array_slice()

Este es un ejemplo de la PHP manual: array_slice

$input = array("a", "b", "c", "d", "e"); 
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" 

Sólo hay un pequeño problema

Si los índices de matriz son significativas para ti, recuerda que array_slice restablecerá y reordenará numéricos índices de matriz. Necesita el indicador preserve_keys establecido en true para evitar esto. (4º parámetro, disponible desde 5.0.2).

Ejemplo:

$output = array_slice($input, 2, 3, true); 

Salida:

array([3]=>'c', [4]=>'d', [5]=>'e'); 
+12

Guau, 3 años de edición :) Buen trabajo. – webnoob

11

¿En el orden actual? Yo diría array_slice(). Ya que está construido en una función que será más rápido que el bucle a través de la matriz mientras que el seguimiento de un índice de incremento hasta N.

21

Puede utilizar array_slice como:

$sliced_array = array_slice($array,0,$N); 
+0

esto es lo que exactamente quiero. Gracias –

0

array_slice() es mejor que se puede tratar, siguientes son los ejemplos:

<?php 
$input = array("a", "b", "c", "d", "e"); 

$output = array_slice($input, 2);  // returns "c", "d", and "e" 
$output = array_slice($input, -2, 1); // returns "d" 
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" 

// note the differences in the array keys 
print_r(array_slice($input, 2, -1)); 
print_r(array_slice($input, 2, -1, true)); 
?> 
Cuestiones relacionadas