زرع مجموعة بسيطة
سوف تبدو مثل هذا
$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()
لا تستغرق سوى 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));
لاحظ أيضًا أن هناك 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));
}
خيار آخر ممكن ، اعتمادًا على ما تحتاجه الصفيف لـ:
$array = array('lastname', 'email', 'phone');
echo json_encode($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 "'" . implode("','", explode(',', $array)) . "'";
يمكنك أن تفعل ذلك بهذه الطريقة أيضا
<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>