php implode(101)with quotes

mcg*_*ilm 106 php csv arrays string implode

扼杀一个简单的数组

看起来像这样

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
Run Code Online (Sandbox Code Playgroud)

那会回来的

 lastname,email,phone
Run Code Online (Sandbox Code Playgroud)

很棒,所以我可能会这样做

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
Run Code Online (Sandbox Code Playgroud)

现在我有我想要的漂亮的csv字符串

 'lastname','email','phone'
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,我觉得应该有一个可选参数implode我错过了什么?

Ume*_*iya 152

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


echo "'" . implode("','", $array) . "'";
Run Code Online (Sandbox Code Playgroud)

  • 使用此解决方案时请注意空阵列. (5认同)

Fel*_*ing 41

你可以使用array_map():

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

$csv =  implode(',', array_map('add_quotes', $array));
Run Code Online (Sandbox Code Playgroud)

DEMO

另请注意,fputcsv如果要写入文件.

  • @mcgrailm:也许,我建议你做一个基准测试并找出答案;) (2认同)

Raf*_*ler 27

不,你这样做的方式很好.implode()只需要1-2个参数(如果你只提供一个数组,它会用空字符串连接它们).


小智 23

$ids = sprintf("'%s'", implode("','", $ids ) );
Run Code Online (Sandbox Code Playgroud)

  • 很棒,简单而直接。 (2认同)

Dre*_*tto 22

不知道它是否更快,但是,您可以使用您的方法保存一行代码:

$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
Run Code Online (Sandbox Code Playgroud)

至:

$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
Run Code Online (Sandbox Code Playgroud)

  • 我可以进一步,但将数组的定义放在变量 $array 位于最后一行的位置,但速度差异将是如此有限 (2认同)

Nea*_*eal 8

如果你想使用循环,你也可以这样做:

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

演示:http://codepad.org/O2kB4fRo


Mob*_*sen 5

$id = array(2222,3333,4444,5555,6666);
$ids = "'".implode("','",$id)."'";
Run Code Online (Sandbox Code Playgroud)

Or

$ids = sprintf("'%s'", implode("','", $id ) );
Run Code Online (Sandbox Code Playgroud)