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, я что-то упускаю?

Нет, так, как вы это делаете, все в порядке. implode() принимает только 1-2 параметра (если вы просто поставляете массив, он соединяет куски с пустой строкой).

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

Вы можете использовать array_map() :

 function add_quotes($str) { return sprintf("'%s'", $str); } $csv = implode(',', array_map('add_quotes', $array)); 

DEMO

Также обратите внимание, что есть fputcsv если вы хотите записать в файл.

Не знаю, быстрее ли это, но вы можете сохранить строку кода с помощью своего метода:

Из

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

Для того, чтобы:

 $array = array('lastname', 'email', 'phone'); $comma_separated = "'".implode("','", $array)."'"; 
 $ids = sprintf("'%s'", implode("','", $ids ) ); 

Если вы хотите использовать циклы, вы также можете:

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

Демо: http://codepad.org/O2kB4fRo

В качестве альтернативы вы можете создать такую ​​функцию:

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

Затем вы можете вывести строку по желанию.