[英]php implode (101) with quotes
內爆一個簡單的數組
看起來像這樣
$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 我錯過了什么嗎?
$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
。
$ids = sprintf("'%s'", implode("','", $ids ) );
不,你這樣做的方式很好。 implode()
只需要 1-2 個參數(如果你只提供一個數組,它會通過一個空字符串連接各個部分)。
不知道它是否更快,但是,您可以使用您的方法保存一行代碼:
從
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
至:
$array = array('lastname', 'email', 'phone');
$comma_separated = "'".implode("','", $array)."'";
如果你想使用循環,你也可以這樣做:
$array = array('lastname', 'email', 'phone');
foreach($array as &$value){
$value = "'$value'";
}
$comma_separated = implode(",", $array);
$id = array(2222,3333,4444,5555,6666);
$ids = "'".implode("','",$id)."'";
$ids = sprintf("'%s'", implode("','", $id ) );
或者,您可以創建這樣的 function:
function implode_with_quotes(array $data)
{
return sprintf("'%s'", implode("', '", $data));
}
如果你想避免 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";
}
然后您可以根據需要 output 字符串。
我認為這就是你想要做的
$array = array('lastname', 'email', 'phone');
echo "'" . implode("','", explode(',', $array)) . "'";
另一種可能的選擇,取決於您需要陣列的用途:
$array = array('lastname', 'email', 'phone');
echo json_encode($array);
這會將 '[' 和 ']' 放在字符串周圍,您可能想要也可能不想要。
你也可以這樣做
<?php
$csv= '\'' . join(array('lastname', 'email', 'phone'),'\',').'\'';
echo $csv;
?>
不要忘記轉義您的數據! 如果要將數據放入 CSV 文件中而不使用 fputcsv function 或將其放入 SQL 查詢中,請使用以下代碼:
$comma_separated = "'" . implode("','", array_map('addslashes', $array)) . "'";
當輸入數組包含單引號或反斜杠字符時,此代碼避免了 SQL 注入或數據碎片。
如果您需要保留雙引號(也許格式化 json?),您還可以:
$array = ["a", "b", "c"];
implode("\",\"", $array) // "a","b","c"
另一種解決方案是使用 implode + preg_replace 實現的,如下所示:
$a = ['A', 'B', 'C'];
implode(',', preg_replace('/^(.*)$/', '"$1"', $a)); // "A","B","C"
$b = [];
implode(',', preg_replace('/^(.*)$/', '"$1"', $b)); // empty string
如您所見,這也使您免於檢查數組是否為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.