数组 - 带引号的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'
有没有更好的方法来做到这一点,我觉得应该有一个可选参数implode我错过了什么?
11个解决方案
146 votes
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", $array) . "'";
Umesh Moghariya answered 2019-07-22T02:20:49Z
41 votes
你可以使用fputcsv:
function add_quotes($str) {
return sprintf("'%s'", $str);
}
$csv = implode(',', array_map('add_quotes', $array));
DEMO
另请注意,如果要写入文件,则有fputcsv。
Felix Kling answered 2019-07-22T02:21:21Z
26 votes
不,你这样做的方式很好。 implode()只需要1-2个参数(如果你只提供一个数组,它会用空字符串连接它们)。
Rafe Kettler answered 2019-07-22T02:20:32Z
22 votes
不知道它是否更快,但是,您可以使用您的方法保存一行代码:
从
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
至:
$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
Drew Dello Stritto answered 2019-07-22T02:21:48Z
20 votes
$ids = sprintf("'%s'", implode("','", $ids ) );
Robb answered 2019-07-22T02:22:06Z
8 votes
如果你想使用循环,你也可以这样做:
$array = array('lastname', 'email', 'phone');
foreach($array as &$value){
$value = "'$value'";
}
$comma_separated = implode(",", $array);
演示:[http://codepad.org/O2kB4fRo]
Neal answered 2019-07-22T02:22:36Z
2 votes
或者,您可以创建这样的功能:
function implode_with_quotes(array $data)
{
return sprintf("'%s'", implode("', '", $data));
}
Nurlan Alekberov answered 2019-07-22T02:23:01Z
1 votes
另一种可能的选择,取决于您需要的阵列:
$array = array('lastname', 'email', 'phone');
echo json_encode($array);
这将在字符串周围放置'['和']',您可能想要也可能不想要。
Jeremy French answered 2019-07-22T02:23:32Z
0 votes
你也可以这样做
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>
Senad Meškin answered 2019-07-22T02:23:56Z
0 votes
我想这就是你想要做的
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";
rack_nilesh answered 2019-07-22T02:24:20Z
0 votes
如果你想避免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";
}
然后您可以根据需要输出字符串。
doublejosh answered 2019-07-22T02:25:00Z