128 votes

Comment créer une liste séparée par des virgules d'un tableau en PHP?

Je sais comment parcourir les éléments d'un tableau en utilisant foreach et ajouter une virgule, mais il est toujours pénible de devoir enlever la virgule finale. Existe-t-il un moyen simple de le faire en PHP?

 $fruit = array('apple', 'banana', 'pear', 'grape');
 

En fin de compte je veux

 $result = "apple, banana, pear, grape"
 

249voto

ryeguy Points 24980

Vous souhaitez utiliser imploser pour cela.

c'est à dire: $commaList = implode(', ', $fruit);


Il existe un moyen d'ajouter des virgules, sans avoir de fuite. Vous voulez le faire si vous devez faire une autre manipulation en même temps. Par exemple, vous voudrez peut-être de citer chaque fruit, puis de les séparer tous les par des virgules:

$prefix = '';
foreach ($fruits as $fruit)
{
    $fruitList .= $prefix . '"' . $fruit . '"';
    $prefix = ', ';
}

Aussi, si vous venez de le faire de la façon "normale" d'ajouter une virgule après chaque élément (comme il semble que vous faisiez avant), et vous avez besoin de couper le dernier arrêt, il suffit de faire $list = rtrim($list, ', '). Je vois beaucoup de personnes ont inutilement de déblayage autour avec substr dans cette situation.

40voto

Nate Points 2189

Voici comment je le fais:

 $arr = array(1,2,3,4,5,6,7,8,9);

$string = rtrim(implode(',', $arr), ',');

echo $string;
 

Sortie:

 1,2,3,4,5,6,7,8,9
 

Démo en direct: http://ideone.com/EWK1XR

4voto

ceasetodream Points 1

Semblable à la réponse de Lloyd, mais fonctionne avec n'importe quel tableau de taille.

 $missing = array();
$missing[] = 'name';
$missing[] = 'zipcode';
$missing[] = 'phone';

if( is_array($missing) && count($missing) > 0 )
        {
            $result = '';
            $total = count($missing) - 1;
            for($i = 0; $i <= $total; $i++)
            { 
              if($i == $total && $total > 0)
                   $result .= "and ";

              $result .= $missing[$i];

              if($i < $total)
                $result .= ", ";
            }

            echo 'You need to provide your '.$result.'.';
            // Echos "You need to provide your name, zipcode, and phone."
        }
 

3voto

Lloyd Banks Points 3972

Je préfère utiliser une instruction IF dans la boucle FOR qui vérifie que l'itération actuelle n'est pas la dernière valeur du tableau. Sinon, ajoutez une virgule

 $fruit = array("apple", "banana", "pear", "grape");

For ($i = 0; $i <= 3; $i++)
  {echo "$fruit[$i]";
  If ($i < 3)
  echo ", ";
  }
 

-1voto

vogomatix Points 2361

Si vous citez des réponses, vous pouvez le faire

 $commaList = '"'.implode( '" , " ', $fruit). '"';
 

ce qui précède suppose que le fruit est non nul. Si vous ne voulez pas faire cette hypothèse, vous pouvez utiliser une instruction if-then-else ou ternaire (? :).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X