2009-10-15 5 views

Répondre

217

array_slice retourne une tranche d'un tableau

$sliced_array = array_slice($array, 0, 5) 

est le code que vous voulez dans votre cas revenir les cinq premiers éléments

+0

mais cela ne fonctionnera pas avec les tableaux associatifs. les clés se perdent. – ESCOBAR

+3

@ESCOBAR: les tableaux associatifs n'ont pas nécessairement d'ordre, ils ne mappent que les clés aux valeurs; donc "les valeurs 3 à 7" n'ont pas vraiment de sens quand même ... – knittl

+0

à droite, mais dans ce cas c'est sans lien avec la commande. il s'agit juste des 5 premiers articles. et vous ne pouvez pas utiliser array_slice ici. – ESCOBAR

6

array_splice - Retirez une partie du tableau et le remplacer par quelque chose d'autre:

$input = array(1, 2, 3, 4, 5, 6); 
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5) 

De manuel PHP:

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement]]) 

Si longueur est omis, supprime tout de l'offset vers la fin du tableau. Si la longueur est spécifiée et positive, alors beaucoup d'éléments seront supprimés. Si la longueur est spécifiée et négative, la fin de la partie supprimée sera composée de nombreux éléments à partir de la fin du tableau. Astuce: pour supprimer tout ce qui est de l'offset à la fin du tableau lorsque le remplacement est également spécifié, utilisez count ($ input) pour la longueur.

+0

la syntaxe pour retourner les 5 premiers éléments est array_splice ($ input, 5) – aland

+0

Merci, fixe maintenant. –

+0

@AndrejsCainikovs Selon php.net, "Si length est omis, alors la séquence aura tout depuis offset jusqu'à la fin du tableau." Le texte en gras de la réponse indique exactement le contraire. – Kalko

1

Si vous voulez juste pour sortir les 5 premiers éléments, vous devriez écrire quelque chose comme:

<?php 

    if (!empty ($an_array)) { 

    $min = min (count ($an_array), 5); 

    $i = 0; 

    foreach ($value in $an_array) { 

     echo $value; 
     $i++; 
     if ($i == $min) break; 

    } 

    } 

?> 

Si vous voulez écrire une fonction qui renvoie une partie du tableau, vous devez utiliser array_slice:

<?php 

    function GetElements($an_array, $elements) { 
    return array_slice($an_array, 0, $elements); 
    } 

?> 
0

Vous pouvez utiliser la fonction array_slice, mais utiliserez-vous d'autres valeurs? ou seulement les 5 premiers? car si vous n'utilisez que les 5 premiers, vous pouvez utiliser la LIMIT sur SQL.

-3

Une méthode plus orientée objet serait de fournir une plage à la méthode # []. Par exemple:

Dites que vous voulez les 3 premiers éléments d'un tableau.

numéros = [1,2,3,4,5,6]

nombres [0..2] # => [1,2,3]

Dites que vous voulez le premier x éléments d'un tableau.

numéros [0..X-1]

La grande chose au sujet de cette méthode est que si vous demandez plus d'éléments que le tableau a, il retourne simplement le tableau entier.

nombres [0..100] # => [1,2,3,4,5,6]

+3

Mais php ne prend pas en charge les plages. Êtes-vous sûr de ne pas parler de rubis ou de quelque chose comme ça? –

+1

"Une manière plus orientée objet"? Cette réponse n'a rien à voir avec la programmation orientée objet. – Ducky

Questions connexes