¿Obtener los primeros N elementos de una matriz?

207

Cuál es la mejor manera de lograr esto?

GSto
fuente
77
Si alguna vez necesita encontrar una función para hacer algo con una matriz, vaya a: php.net/manual/en/function.array.php y mire las funciones.
Galen
21
en lugar de venir a SO!?
Hrishikesh Choudhari

Respuestas:

360

Utilice array_slice ()

Este es un ejemplo del manual de PHP: array_slice

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

Solo hay un pequeño problema

Si los índices de la matriz son significativos para usted, recuerde que array_slicerestablecerá y reordenará los índices numéricos de la matriz. Necesita la preserve_keysbandera establecida truepara evitar esto. (4to parámetro, disponible desde 5.0.2).

Ejemplo:

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

Salida:

array([3]=>'c', [4]=>'d', [5]=>'e');
corbacho
fuente
29

Puede usar array_slice como:

$sliced_array = array_slice($array,0,$N);
codictorio
fuente
12

En el orden actual? Yo diría array_slice () . Como es una función incorporada, será más rápido que recorrer la matriz mientras realiza un seguimiento de un índice creciente hasta N.

Fanis Hatzidakis
fuente
4

array_slice () es lo mejor para probar, los 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));
?>
Estrella
fuente