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 ответов:
нет, то, как вы это делаете, просто отлично.
implode()принимает только 1-2 параметра (если вы просто поставляете массив, он соединяет части пустой строкой).
вы могли бы использовать
array_map():function add_quotes($str) { return sprintf("'%s'", $str); } $csv = implode(',', array_map('add_quotes', $array));также обратите внимание, что есть
fputcsvесли вы хотите записать в файл.
не знаю, если это быстрее, но вы можете сохранить строку кода с способ:
С
$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)); }
вы можете сделать это таким образом
<?php $csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\''; echo $csv; ?>
Я думаю, что это то, что вы пытаетесь сделать
$array = array('lastname', 'email', 'phone'); echo "'" . implode("','", explode(',', $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 json_encode($array);это поставит ' ['и'] ' вокруг строки, которую вы можете или не хотите.
Comments