首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 二維陣列轉字串的簡潔實作

     編輯:PHP 相關知識

將二維陣列轉為「每列以逗號分隔、列與列間以單引號包裹並用逗號分隔」的字串,常用於 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"

效能與替代方案

  • 小型陣列(< 1,000 列)上述寫法足夠。
  • 大量資料建議用 array_map + implode 避免重複字串連接:
    function arr2strFast($arr) {
        return implode("','", array_map(function($row){
            return implode(',', $row);
        }, $arr));
    }
    
  • 若直接寫入 SQL,請務必搭配 mysqli_real_escape_string 或參數化查詢,防止注入。

這個小工具能快速產生符合特定格式的字串,減少手工拼接錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved