Maison >développement back-end >tutoriel php >Comment imploser un tableau avec \', \' et \'and\' avant le dernier élément ?

Comment imploser un tableau avec \', \' et \'and\' avant le dernier élément ?

DDD
DDDoriginal
2024-12-01 06:58:12733parcourir

How to Implode an Array with

Implorer un tableau avec "," et "et" Avant le dernier élément

Implorer un tableau dans une chaîne à l'aide d'une liste séparée par des virgules est une tâche courante. Cependant, lorsque vous devez ajouter « et » avant le dernier élément, ce n'est pas toujours simple.

Une fonction implose régulière

La fonction implose() peut être utilisée pour concaténer les éléments d'un tableau en chaîne, avec un séparateur spécifié. Par exemple, le code suivant imploserait un tableau de noms de boissons dans une liste séparée par des virgules :

$listArrau = ['coke', 'sprite', 'fanta'];
$listString = implode(', ', $listArrau);

Cela produirait la chaîne suivante :

coke, sprite, fanta

Ajout de "et" avant le dernier élément

Pour insérer "et" avant le dernier élément, nous devons modifier le processus d'implosion. Voici une solution longue durée :

echo join(' and ', array_filter(array_merge(array(join(', ', array_slice($array, 0, -1))), array_slice($array, -1)), 'strlen'));

Cette expression se décompose en plusieurs étapes :

  1. Découpez le tableau : Deux tranches sont réalisées, une pour obtenir tous les éléments sauf le dernier, et un autre pour obtenir uniquement le dernier élément.
  2. Fusionner les slices : Les deux tranches sont fusionnées en un tableau unidimensionnel.
  3. Filtrer le tableau : Le tableau fusionné est filtré pour supprimer les éléments vides (en garantissant qu'il n'y a pas de valeurs vides ou séparateurs de fin).
  4. Rejoindre le tableau : Le tableau filtré est joint en utilisant " et " comme séparateur, produisant la chaîne souhaitée.

Voici une version détaillée avec les étapes séparées :

$last = array_slice($array, -1);
$first = join(', ', array_slice($array, 0, -1));
$both = array_filter(array_merge(array($first), $last), 'strlen');
echo join(' and ', $both);

Cette approche en plusieurs étapes nous permet de traiter des cas avec n'importe quel nombre d'éléments, y compris 0, 1 et 2 éléments, correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn