web-dev-qa-db-fra.com

php implode (101) avec guillemets

Imploser un tableau simple

ressemblerait à ceci

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

et cela reviendrait cette

 lastname,email,phone

super, donc je pourrais le faire à la place

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";

et maintenant j'ai ce que je veux une belle jolie chaîne csv

 'lastname','email','phone'

y at-il une meilleure façon de faire cela, il me semble qu’il devrait y avoir un paramètre optionnel pour implode, est-ce que je manque quelque chose?

105
mcgrailm

Non, la façon dont vous le faites est très bien. implode() ne prend que 1 à 2 paramètres (si vous ne fournissez qu'un tableau, il relie les pièces par une chaîne vide).

26
Rafe Kettler
$array = array('lastname', 'email', 'phone');


echo "'" . implode("','", $array) . "'";
150
Umesh Moghariya

Vous pouvez utiliser array_map() :

function add_quotes($str) {
    return sprintf("'%s'", $str);
}

$csv =  implode(',', array_map('add_quotes', $array));

[~ # ~] démo [~ # ~]

Notez également qu'il y a fputcsv si vous souhaitez écrire dans un fichier.

41
Felix Kling
$ids = sprintf("'%s'", implode("','", $ids ) );
22
Robb

Je ne sais pas si c'est plus rapide, mais vous pourriez enregistrer une ligne de code avec votre méthode:

à partir de

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";

To:

$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
22
Drew Dello Stritto

Si vous voulez utiliser des boucles, vous pouvez aussi faire:

$array = array('lastname', 'email', 'phone');
foreach($array as &$value){
   $value = "'$value'";
}
$comma_separated = implode(",", $array);

Démo: http://codepad.org/O2kB4fRo

8
Neal

Sinon, vous pouvez créer une telle fonction:

function implode_with_quotes(array $data)
{
    return sprintf("'%s'", implode("', '", $data));
}
2
Nurlan Alekberov

Une autre option possible, selon ce dont vous avez besoin du tableau pour:

$array = array('lastname', 'email', 'phone');
echo json_encode($array);

Cela mettra '[' et ']' autour de la chaîne, que vous ne vouliez pas ou pas.

1
Jeremy French

Si vous souhaitez éviter les sous-systèmes fopen/fputcsv, voici un extrait qui crée une chaîne CSV échappée à partir d'un tableau associatif ....

$output = '';
foreach ($list as $row) {
  $output .= '"' . implode('", "', array_values($row)) . '"' . "\r\n";
}

Ou à partir d'une liste d'objets ...

foreach ($list as $obj) {
  $output .= '"' . implode('", "', array_values((array) $obj)) . '"' . "\r\n";
}

Ensuite, vous pouvez sortir la chaîne comme vous le souhaitez.

0
doublejosh

Je pense que c'est ce que vous essayez de faire

$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";
0
rack_nilesh

vous pouvez le faire aussi

<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>
0
Senad Meškin