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?
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).
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", $array) . "'";
Vous pouvez utiliser array_map()
:
function add_quotes($str) {
return sprintf("'%s'", $str);
}
$csv = implode(',', array_map('add_quotes', $array));
Notez également qu'il y a fputcsv
si vous souhaitez écrire dans un fichier.
$ids = sprintf("'%s'", implode("','", $ids ) );
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)."'";
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);
Sinon, vous pouvez créer une telle fonction:
function implode_with_quotes(array $data)
{
return sprintf("'%s'", implode("', '", $data));
}
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.
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.
Je pense que c'est ce que vous essayez de faire
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";
vous pouvez le faire aussi
<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>