単純な配列の内破
このように見える
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
そしてそれはこれを返します
lastname,email,phone
素晴らしいので、代わりにこれを行うかもしれません
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
そして今、私は私が欲しい素敵なCSV文字列を持っています
'lastname','email','phone'
これを行うためのより良い方法はありますか?
いいえ、あなたがそれをしている方法は問題ありません。 implode()
は1〜2個のパラメータのみを取ります(配列を指定するだけの場合、空の文字列でピースを結合します)。
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", $array) . "'";
array_map()
を使用できます:
function add_quotes($str) {
return sprintf("'%s'", $str);
}
$csv = implode(',', array_map('add_quotes', $array));
また、ファイルに書き込みたい場合は fputcsv
があることに注意してください。
$ids = sprintf("'%s'", implode("','", $ids ) );
それが速いかどうかはわかりませんが、メソッドでコード行を保存できます:
From
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
To:
$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
ループを使用する場合は、次のこともできます。
$array = array('lastname', 'email', 'phone');
foreach($array as &$value){
$value = "'$value'";
}
$comma_separated = implode(",", $array);
または、次のような関数を作成できます。
function implode_with_quotes(array $data)
{
return sprintf("'%s'", implode("', '", $data));
}
配列が必要なものに応じて、別の可能なオプション:
$array = array('lastname', 'email', 'phone');
echo json_encode($array);
これにより、文字列の周りに '['および ']'が配置されますが、これは必要な場合と不要な場合があります。
Fopen/fputcsvサブシステムを避けたい場合は、連想配列からエスケープされたCSV文字列を作成するスニペットがあります。
$output = '';
foreach ($list as $row) {
$output .= '"' . implode('", "', array_values($row)) . '"' . "\r\n";
}
またはオブジェクトのリストから...
foreach ($list as $obj) {
$output .= '"' . implode('", "', array_values((array) $obj)) . '"' . "\r\n";
}
その後、必要に応じて文字列を出力できます。
これがあなたがやろうとしていることだと思う
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";
この方法でもできます
<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>