Split tableau en deux tableaux à l'indice pair ou impair
J'ai ce tableau:
$array = array(a, b, c, d, e, f, g);
Je veux le séparer en deux groupes en fonction de si l'indice est pair ou impair, comme ceci:
$odd = array(a, c, e, g);
$even = array(b, d, f);
Merci d'avance!
Les clés pour
b
, d
et f
sont 1
, 3
et 5
... êtes-vous sûr qu'ils ne devraient pas être $odd
?OriginalL'auteur Marc Vidal Moreno | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Une solution, en utilisant les fonctions anonymes et
array_walk
:Ce qui sépare les éléments en un seul passage sur le tableau, mais c'est un peu sur le "cleverish" côté. C'est pas vraiment mieux que le classique, plus détaillé
OriginalL'auteur Jon
Utilisation
array_filter
:array_filter
fonctionne sur des valeurs et des touches pasAh. Trop rapide pour donner une réponse et ne pas lire la question correctement.
Fait intéressant, il semble que depuis PHP 5.6, vous pouvez utiliser
array_filter
en touche au lieu de la valeur si vous passezARRAY_FILTER_USE_KEY
dans le troisième argument optionnel.OriginalL'auteur Gareth
Je ne suis pas sûr si ce est la façon la plus élégante, mais il devrait fonctionner un charme:
OriginalL'auteur Fluffeh
Vous plaisantez, non?
Nan je ne l'étais pas. Votre réponse était tellement court qu'il a atterri dans le Faible Qualité de l'Examen de la File d'attente. N'en déplaise entend-on par mon commentaire, et votre réponse n'est pas mauvais, c'est pourquoi j'ai voté pas de le faire enlever, mais une explication de base de ce que vous faites, serait utile. Une simple phrase permettra de doubler la qualité de votre réponse, qui aide les futurs nouveaux utilisateurs, et améliore vos chances de un +1. C'est une situation gagnant-gagnant.
Je suis un homme simple. Je n'ai pas besoin de votes. Et j'ai vraiment ne se soucient pas de ce que "l'Examen de la Qualité" algorithme "pense" je dois faire.
Je me sens ya. Mais l'espoir est que tous entièrement expliqué réponse, même si trivial, permet d'apprendre un Padawan nettoyeur de code. Permettant code des maîtres un peu plus ininterrompue de moments de sortie de code pour changer le monde. 😉
OriginalL'auteur Martin
Comme un " presque-one-liner, je pense que ce sera mon préféré: le
Ou pour un petit peu plus? vitesse:
Un peu plus verbeux variante:
Avec
array_chunk
:Si $array est la garantie d'avoir même nombre d'éléments:
PHP 5.5.0+ avec
array_column
:Quelque chose de similaire pour les anciennes versions de PHP.
Les clés seront 0,2,4,... et le 1,3,5,.... Si vous n'aimez pas cela, appliquer une
array_values
trop:ou
OriginalL'auteur biziclop
Juste de la boucle si eux et de vérifier si la clé est pair ou impair:
OriginalL'auteur Krycke
Un
Deux
OriginalL'auteur Clyde Lobo
@Jon deuxième variante, j'ai fait ceci à la suite pour une utilisation avec PHP Smarty v3 moteur de template. C'est pour l'affichage des news/blog avec à la fois une ou deux colonnes de modèle de modèle.
Après la requête MySql, je vais faire le code suivant :
Je obtenir un tableau de 3 sous-ensembles (y compris bizarre/même classe) avec Smarty syntaxe d'utilisation :
{foreach $data.all as $article}...{/foreach}
{foreach $data.odd as $article}...{/foreach}
{foreach $data.even as $article}...{/foreach}
Espère que cela aidera certaines personnes...
OriginalL'auteur Meloman