it-swarm.asia

فب ينفجر (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'

هل هناك طريقة أفضل للقيام بذلك ، يبدو لي وكأنه يجب أن يكون هناك معلمة اختيارية للإنفجار هل أفتقد شيئًا؟

103
mcgrailm

لا ، الطريقة التي تفعل بها على ما يرام. implode() لا تستغرق سوى 1-2 معلمات (إذا قمت بتوفير صفيف ، فستربط القطع بسلسلة فارغة).

26
Rafe Kettler
$array = array('lastname', 'email', 'phone');


echo "'" . implode("','", $array) . "'";
149
Umesh Moghariya

يمكنك استخدام array_map() :

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

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

DEMO

لاحظ أيضًا أن هناك fputcsv إذا كنت تريد الكتابة إلى ملف.

41
Felix Kling

لا تعرف ما إذا كان أسرع ، ولكن يمكنك حفظ سطر من التعليمات البرمجية باستخدام طريقتك:

من عند

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

إلى:

$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
22
Drew Dello Stritto
$ids = sprintf("'%s'", implode("','", $ids ) );
21
Robb

إذا كنت تريد استخدام الحلقات ، يمكنك أيضًا القيام بما يلي:

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

العرض التوضيحي: http://codepad.org/O2kB4fRo

8
Neal

بدلاً من ذلك ، يمكنك إنشاء مثل هذه الوظيفة:

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

خيار آخر ممكن ، اعتمادًا على ما تحتاجه الصفيف لـ:

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

سيضع ذلك "[" و "] حول السلسلة ، والتي قد ترغب بها أو لا تريدها.

1
Jeremy French

إذا كنت ترغب في تجنب الأنظمة الفرعية 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";
}

ثم يمكنك إخراج السلسلة كما تريد.

0
doublejosh

أعتقد أن هذا هو ما تحاول القيام به

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

يمكنك أن تفعل ذلك بهذه الطريقة أيضا

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