[英]How To Create PHP Array to JSON Array using json_encode();
[英]Force json_encode to create strings of numeric values in a flat array
我必須將 PHP 數組 json_encode 編碼為 JavaScript 數組。 不幸的是,如果它包含整數而不是字符串,我使用的 jQuery 庫將無法正確處理該數組。
大多數情況下,這將生成僅包含字符串的正確數組:
json_encode($data)
即使$data
只包含數字,我通常也會得到這個:
["3","7","8"]
但有時,我會得到這樣的結果(注意零):
["9691","1792","26","1","4","15",0,"1"]
或者這個
[16171,15470,10390,7585]
(注意,這顯然是不同的數據來說明發生了什么)。 我需要強制 json_encode 將數組值視為字符串。 我知道有強制數字的相反選項 JSON_NUMERIC_CHECK。 等價物真的不存在嗎? 似乎我唯一的選擇是在 JavaScript 端再次處理數組,這雖然可能,但在某種程度上破壞了我的對象的封裝。
如果有JSON_NUMERIC_CHECK
的反面JSON_NUMERIC_CHECK
但看起來沒有。
為什么不能在編碼之前確保 php 中的數據類型正確?
這可能意味着您必須手動將其轉換為字符串...
在您的數組中將它們定義為字符串,或者如果它來自其他地方:
$data = json_encode(array_map('strval', $data));
json_decode()
可以將大整數轉換為字符串,如果您在函數調用中指定一個標志:
$array = json_decode($json, true, 512, JSON_BIGINT_AS_STRING)
因為JSON_NUMERIC_CHECK
沒有相反的標志, JSON_NUMERIC_CHECK
我為此創建了一個函數。
它接受一維和多維數組,並且可以添加條件來驗證 te 數組的每個元素。
function JSON_NUMERIC_STRING($array){
foreach($array as $key => &$value){
if(is_array($value)){
$value = iterateMA($value);
}elseif(is_numeric($value)){
$value = strval($value);
}
// add more conditions if needed...
}
return $array;
}
$array = JSON_NUMERIC_STRING($array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.