2010-12-01 3 views
2

J'ai un tableau où je veux utiliser array_slice pour supprimer le premier élément du tableau. Voici la commande:PHP array_slice() la longueur null donne le tableau vide

$myArray = array_slice($myArray, 1); 

Maintenant, array_slice a un 4ème argument lorsque la valeur true, il conserve les clés du tableau au lieu de les remettre à zéro. J'ai besoin que cette option soit définie sur true.

Le troisième argument consiste à spécifier la longueur du tableau résultant. Vous êtes censé laisser cet argument si vous voulez que le tableau soit coupé à la fin du tableau au lieu de spécifier une longueur.

J'ai donc essayé ceci:

$myArray = array_slice($myArray, 1, NULL, true); 

Et cela se traduit par un tableau vide. Qu'est-ce que je fais mal? Existe-t-il une autre façon de "laisser de côté" l'argument length sans le définir sur NULL? Parce que le définir à NULL semble vider complètement mon tableau.

En outre, ma solution est de le faire:

$myArray = array_slice($myArray, 1, count($myArray)-1, true); 

mais il ne semble pas que je devrais le faire ...

MISE À JOUR

Cela semble être un bogue avec PHP 5.1.6

+0

Une raison particulière pour laquelle cette question a été rejetée? –

+2

Le fait qu'il soit hors-sujet pour serverfault semble extrêmement probable. – Zoredache

+0

Oh mon dieu ... Je pensais vraiment avoir posté ceci sur SO .... à celui qui a le pouvoir, s'il vous plaît déplacer ce sujet à SO –

Répondre

0

essayez ce

$myArray = array_slice($myArray, 1, -1, true); 
+0

Non, cela supprime le premier élément, mais les tranches jusqu'au 2ème élément (le -1ème élément) dans le tableau. Donc, dans un sens, il tranche mais le premier et le dernier élément du tableau sont désactivés. –

1

Je viens de tester ce code:

$myArray = array(
'test1' => 'test1', 
'test2' => 'test2', 
'test3' => 'test3', 
'test4' => 'test4', 
); 

var_dump(array_slice($myArray, 1, null, true)); 

Et cela fonctionne très bien pour moi en ne montrant que test2, test3 et test4.

Ceci a été exécuté le 5.2.13. Essayez de mettre à jour PHP (je sais que je devrais aussi, mais c'est une boîte de dev).

+0

Je suis sur PHP 5.1.6, qui est le problème standard de CentOS. Peut-être que c'est un bug. Je vais essayer de mettre à jour. –

+0

@Jakobud: À l'intérieur, il y a des corrections mineures au niveau du backport. Essayez la dernière version de CentOS et si ce n'est pas le cas, essayez une version ultérieure de PHP. J'ai une mise à jour sur une mise à niveau super facile à PHP 5.2 ou 5.3 avec CentOS, il suffit d'ignorer les parties nginx: http://rob.olmos.name/2010/08/centos-5-5-php-5-3-3 -php-fpm-nginx-rpms / –

0

Impossible d'utiliser également array_shift pour supprimer le 1er élément d'un tableau?

EDIT: Il semble que vous souhaitiez conserver des clés numériques, alors ne vous occupez pas de cela.

Questions connexes