將二維陣列轉為「每列以逗號分隔、列與列間以單引號包裹並用逗號分隔」的字串,常用於 SQL IN 子句或批次匯入格式。本文提供一個簡潔函式 arr2str 完成此轉換。
function arr2str($arr) {
$temp = array();
foreach ($arr as $v) {
// 將子陣列用逗號串聯
$v = join(",", $v);
$temp[] = $v;
}
$t = "";
foreach ($temp as $v) {
// 每列用單引號包裹並加逗號
$t .= "'{$v}',";
}
// 移除尾端多餘逗號
return substr($t, 0, -1);
}
$data = [
['apple', 'red', 10],
['banana', 'yellow', 20],
['cherry', 'red', 30]
];
echo arr2str($data);
// 輸出:'apple,red,10','banana,yellow,20','cherry,red,30'
function arr2strAdv($arr, $colSep = ',', $rowSep = "', '", $quote = "'") {
$rows = array();
foreach ($arr as $row) {
// 過濾 null/空字串,視需求調整
$filtered = array_filter($row, function($v){ return $v !== '' && $v !== null; });
$rows[] = $quote . implode($colSep, $filtered) . $quote;
}
return implode($rowSep, $rows);
}
// 使用預設格式
echo arr2strAdv($data);
// 同樣輸出:'apple,red,10', 'banana,yellow,20', 'cherry,red,30'
// 自訂:雙引號包裹、分號分隔欄位、管線分隔列
echo arr2strAdv($data, ';', '"', '"');
// "apple;red;10"|"banana;yellow;20"|"cherry;red;30"
array_map + implode 避免重複字串連接:
function arr2strFast($arr) {
return implode("','", array_map(function($row){
return implode(',', $row);
}, $arr));
}
mysqli_real_escape_string 或參數化查詢,防止注入。這個小工具能快速產生符合特定格式的字串,減少手工拼接錯誤。