mais cela ne fonctionnera pas avec les tableaux associatifs. les clés se perdent.
ESCOBAR
4
@ESCOBAR: les tableaux associatifs n'ont pas forcément d'ordre, ils ne mappent que des clés à des valeurs; donc "valeurs 3 à 7" n'a pas vraiment de sens de toute façon…
knittl
droit, mais dans ce cas, il n’est pas lié à la commande. il s'agit à peu près des 5 premiers éléments. et vous ne pouvez pas utiliser array_slice ici.
ESCOBAR
2
@ESCOBAR: il n'y a pas de premiers éléments si vous n'avez pas d'ordre défini. "Premier" ne fonctionne que si vous savez quel élément vient avant ou après les autres éléments. Mais juste pour le plaisir, vous pouvez re-combiner les clés avec les valeurs du tableau (bien qu'il n'y ait toujours pas d'ordre défini):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: " array_slicerenvoie une tranche d'un tableau". Mais je modifierai ma réponse pour la rendre un peu plus claire.
knittl
9
array_splice - Supprimez une partie du tableau et remplacez-la par autre chose:
$input = array(1,2,3,4,5,6);
array_splice($input,5);// $input is now array(1, 2, 3, 4, 5)
Si la longueur est omise, supprime tout de l'offset jusqu'à la fin du tableau . Si la longueur est spécifiée et est positive, alors que de nombreux éléments seront supprimés. Si la longueur est spécifiée et est négative, la fin de la partie supprimée sera autant d'éléments à partir de la fin du tableau. Astuce: pour tout supprimer de l'offset jusqu'à la fin du tableau lorsque le remplacement est également spécifié, utilisez count ($ input) pour la longueur.
la syntaxe pour renvoyer les 5 premiers éléments est array_splice ($ input, 5)
aland
@AndrejsCainikovs Selon php.net, "Si la longueur est omise, alors la séquence aura tout depuis le décalage jusqu'à la fin du tableau." Le texte en gras de la réponse indique exactement le contraire.
Kalko
@Kalko: vous avez probablement regardé la mauvaise page. Ma déclaration copiée
Andrejs Cainikovs
@AndrejsCainikovs true mate, j'avais la page pour array_slice et je n'ai pas remarqué que votre réponse concernait array_splice ... mon mauvais: D
Kalko
3
Si vous souhaitez simplement afficher les 5 premiers éléments, vous devez écrire quelque chose comme:
Vous pouvez utiliser la fonction array_slice, mais allez-vous utiliser une autre valeur? ou seulement les 5 premiers? car si vous n'utilisez que les 5 premiers, vous pouvez utiliser la LIMITE sur SQL.
Réponses:
array_slice
renvoie une tranche d'un tableauest le code que vous souhaitez dans votre cas pour renvoyer les cinq premiers éléments
la source
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
renvoie une tranche d'un tableau". Mais je modifierai ma réponse pour la rendre un peu plus claire.array_splice - Supprimez une partie du tableau et remplacez-la par autre chose:
Depuis le manuel PHP:
Si la longueur est omise, supprime tout de l'offset jusqu'à la fin du tableau . Si la longueur est spécifiée et est positive, alors que de nombreux éléments seront supprimés. Si la longueur est spécifiée et est négative, la fin de la partie supprimée sera autant d'éléments à partir de la fin du tableau. Astuce: pour tout supprimer de l'offset jusqu'à la fin du tableau lorsque le remplacement est également spécifié, utilisez count ($ input) pour la longueur.
la source
Si vous souhaitez simplement afficher les 5 premiers éléments, vous devez écrire quelque chose comme:
Si vous souhaitez écrire une fonction qui renvoie une partie du tableau, vous devez utiliser array_slice:
la source
Vous pouvez utiliser la fonction array_slice, mais allez-vous utiliser une autre valeur? ou seulement les 5 premiers? car si vous n'utilisez que les 5 premiers, vous pouvez utiliser la LIMITE sur SQL.
la source
Une manière plus orientée objet serait de fournir une plage à la méthode # []. Par exemple:
Supposons que vous vouliez les 3 premiers éléments d'un tableau.
nombres = [1,2,3,4,5,6]
nombres [0..2] # => [1,2,3]
Supposons que vous vouliez les x premiers éléments d'un tableau.
nombres [0..x-1]
L'avantage de cette méthode est que si vous demandez plus d'éléments que le tableau n'en a, elle renvoie simplement le tableau entier.
nombres [0..100] # => [1,2,3,4,5,6]
la source