php implode (101) with quotes

非 Y 不嫁゛ 提交于 2019-11-26 04:39:19

问题


Imploding a simple array

would look like this

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

and that would return this

 lastname,email,phone

great, so i might do this instead

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

and now i have what I want a nice pretty csv string

 \'lastname\',\'email\',\'phone\'

is there a better way to do this, it feels to me like there should be an optional parameter for implode am I missing something ?


回答1:


No, the way that you're doing it is just fine. implode() only takes 1-2 parameters (if you just supply an array, it joins the pieces by an empty string).




回答2:


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


echo "'" . implode("','", $array) . "'";



回答3:


You could use array_map():

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

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

DEMO

Also note that there is fputcsv if you want to write to a file.




回答4:


$ids = sprintf("'%s'", implode("','", $ids ) );



回答5:


Don't know if it's quicker, but, you could save a line of code with your method:

From

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

To:

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



回答6:


If you want to use loops you can also do:

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

Demo: http://codepad.org/O2kB4fRo




回答7:


Alternatively you can create such a function:

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



回答8:


If you want to avoid the fopen/fputcsv sub-systems here's a snippet that builds an escaped CSV string from an associative array....

$output = '';
foreach ($list as $row) {
  $output .= '"' . implode('", "', array_values($row)) . '"' . "\r\n";
}

Or from a list of objects...

foreach ($list as $obj) {
  $output .= '"' . implode('", "', array_values((array) $obj)) . '"' . "\r\n";
}

Then you can output the string as desired.




回答9:


Another possible option, depending on what you need the array for:

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

This will put '[' and ']' around the string, which you may or may not want.




回答10:


you can do it this way also

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



回答11:


I think this is what you are trying to do

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


来源:https://stackoverflow.com/questions/6102398/php-implode-101-with-quotes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!