pero esto no funcionará con matrices asociativas. Las llaves se pierden.
ESCOBAR
44
@ESCOBAR: las matrices asociativas no necesariamente tienen un orden, solo asignan claves a valores; así que "valores de 3 a 7" no tiene sentido de todos modos ...
knittl
correcto, pero en este caso no está relacionado con el pedido. Se trata de los primeros 5 artículos. y no puedes usar array_slice aquí.
ESCOBAR
2
@ESCOBAR: no hay primeros elementos si no tiene un orden definido. "Primero" solo funciona si puede saber qué elemento viene antes o después de otros elementos. Pero solo por diversión, puede volver a combinar las claves con los valores de la matriz (aunque todavía no hay un orden definido):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: " array_slicedevuelve una porción de una matriz". Pero editaré mi respuesta para hacerlo un poco más claro.
knittl
9
array_splice - Elimina una parte de la matriz y reemplázala con otra cosa:
$input = array(1,2,3,4,5,6);
array_splice($input,5);// $input is now array(1, 2, 3, 4, 5)
Si se omite la longitud, elimina todo, desde el desplazamiento hasta el final de la matriz . Si se especifica la longitud y es positiva, se eliminarán muchos elementos. Si se especifica la longitud y es negativa, entonces el final de la porción eliminada será ese número de elementos desde el final de la matriz. Consejo: para eliminar todo, desde el desplazamiento hasta el final de la matriz cuando también se especifica el reemplazo, use count ($ input) para la longitud.
la sintaxis para devolver los primeros 5 elementos es array_splice ($ input, 5)
aland
@AndrejsCainikovs Según php.net, "Si se omite la longitud, entonces la secuencia tendrá todo, desde el desplazamiento hasta el final de la matriz". El texto en negrita de la respuesta dice exactamente lo contrario.
Kalko
@ Kalko: probablemente has mirado la página incorrecta. Mi declaración copiada
Andrejs Cainikovs
@AndrejsCainikovs verdadero amigo, tenía página para array_slice y no noté que tu respuesta era sobre array_splice ... mi mal: D
Kalko
3
Si solo desea generar los primeros 5 elementos, debe escribir algo como:
Respuestas:
array_slice
devuelve una porción de una matrizes el código que desea en su caso para devolver los primeros cinco elementos
fuente
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
devuelve una porción de una matriz". Pero editaré mi respuesta para hacerlo un poco más claro.array_splice - Elimina una parte de la matriz y reemplázala con otra cosa:
Del manual de PHP:
Si se omite la longitud, elimina todo, desde el desplazamiento hasta el final de la matriz . Si se especifica la longitud y es positiva, se eliminarán muchos elementos. Si se especifica la longitud y es negativa, entonces el final de la porción eliminada será ese número de elementos desde el final de la matriz. Consejo: para eliminar todo, desde el desplazamiento hasta el final de la matriz cuando también se especifica el reemplazo, use count ($ input) para la longitud.
fuente
Si solo desea generar los primeros 5 elementos, debe escribir algo como:
Si desea escribir una función que devuelva parte de la matriz, debe usar array_slice:
fuente
Puede usar la función array_slice, pero ¿usará otros valores? o solo los primeros 5? porque si usará solo los primeros 5, puede usar el LIMIT en SQL.
fuente
Una forma más orientada a objetos sería proporcionar un rango al método # []. Por ejemplo:
Supongamos que quiere los primeros 3 elementos de una matriz.
números = [1,2,3,4,5,6]
números [0..2] # => [1,2,3]
Digamos que quiere los primeros x elementos de una matriz.
números [0..x-1]
Lo mejor de este método es que si solicita más elementos de los que tiene la matriz, simplemente devuelve la matriz completa.
números [0..100] # => [1,2,3,4,5,6]
fuente