web-dev-qa-db-ja.com

php implode(101)引用符付き

単純な配列の内破

このように見える

$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'

これを行うためのより良い方法はありますか?

105
mcgrailm

いいえ、あなたがそれをしている方法は問題ありません。 implode()は1〜2個のパラメータのみを取ります(配列を指定するだけの場合、空の文字列でピースを結合します)。

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


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

array_map() を使用できます:

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

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

DEMO

また、ファイルに書き込みたい場合は fputcsv があることに注意してください。

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

それが速いかどうかはわかりませんが、メソッドでコード行を保存できます:

From

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

To:

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

ループを使用する場合は、次のこともできます。

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

デモ: http://codepad.org/O2kB4fRo

8
Neal

または、次のような関数を作成できます。

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

配列が必要なものに応じて、別の可能なオプション:

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

これにより、文字列の周りに '['および ']'が配置されますが、これは必要な場合と不要な場合があります。

1
Jeremy French

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";
}

その後、必要に応じて文字列を出力できます。

0
doublejosh

これがあなたがやろうとしていることだと思う

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

この方法でもできます

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