在PHP程式設計中,常會用到JSON格式的數據,而將JSON陣列轉換為字串是常見問題。下面我們將介紹如何在PHP中將JSON陣列轉換為字串。
PHP提供了一個非常方便的函數json_encode()
,可以將一個PHP陣列轉換為JSON格式的字串。然而,當PHP數組包含多維數組時,json_encode()
函數就不能讓我們滿意了。因此,我們需要使用一個自製的函數。
下面是將JSON陣列轉換為字串的函數:
function json_arr2string($arr, $indent=0){ $str = ""; $indstr = ""; for ($i=0; $i<$indent; $i++){ $indstr .= " "; } foreach ($arr as $key => $val){ if (is_array($val)){ $str .= $indstr . '"' . $key . '": {' . "\n" . json_arr2string($val, $indent+1) . $indstr . "},\n"; } else{ $str .= $indstr . '"' . $key . '": "' . $val . '",' . "\n"; } } return "{" . "\n" . substr($str, 0, -2) . "\n" . $indstr . "}"; }
函數有兩個參數。第一個參數$arr
是要轉換為字串的JSON數組,第二個參數缺省值為0,是用來處理多維數組的。
函數先建立一個空字串變數$str
和一個用來縮排的字串變數$indstr
,然後檢查陣列中的每一個元素。透過遞歸呼叫自身,處理多維數組,直到所有元素都被處理完畢為止。
最後,將字串變數$str
的最後兩個字元刪除(即刪除最後一個逗號和與其相鄰的空格),並添加花括號和換行符,返回最終字串。
下面是一個例子,示範如何使用上述函數將含有多維數組的JSON數組轉換為字串:
$json_arr = array( "name" => "PHP", "version" => "7.3.5", "extension" => array( "json" => "enabled", "curl" => "enabled", "pdo" => "enabled" ), "framework" => array( "name" => "Laravel", "version" => "5.8.18" ) ); $json_str = json_arr2string($json_arr); echo $json_str;
以上程式碼將輸出以下結果:
{ "name": "PHP", "version": "7.3.5", "extension": { "json": "enabled", "curl": "enabled", "pdo": "enabled" }, "framework": { "name": "Laravel", "version": "5.8.18" } }
這是一個符合JSON格式的字串,它將原來的JSON數組轉換為了字串。
總結:使用上述自製函數json_arr2string()
可以很方便地將含有多維數組的JSON數組轉換為字串。如果您在PHP程式設計中沒有遇到過多維數組,那麼json_encode()
函數已經足夠使用了。
以上是php怎麼將JSON數組轉換為字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!