首頁  >  文章  >  後端開發  >  php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?

WBOY
WBOY原創
2016-12-01 00:56:433355瀏覽

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?
這是用file_put_contents函數寫入到檔案裡的排序過的數組,順序是對的。

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?
這是用echo json_encode()輸出到前台的數據,順序改變了。

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?

為什麼呢?想不通啊,誰能解答一下。

回覆內容:

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?
這是用file_put_contents函數寫入到檔案裡的排序過的數組,順序是對的。

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?
這是用echo json_encode()輸出到前台的數據,順序改變了。

php關聯數組排序後,用json_encode輸出給前端,為什麼順序會改變?

為什麼呢?想不通啊,誰能解答一下。

雖然php的陣列有序,javascript或者說json標準中的Object是不保證順序的,json庫任意改變key都是符合標準的行為,任何特定實現中對key順序的處理(保留/排序/亂序)都不應當被依賴

如果要保障順序,建議修改資料結構用"array of object"實作

<code>{
  cnt: [
    {id: "12", value:"1"},
    {id: "03", value:"1"},
    ...</code>

json是無序的


之前遇過類似的問題,你可以把json_encode的值以字串的形式輸出,前端拿到串自己轉換處理一下試試

在Chrome中,的確會有這種情況

即使你在後台輸出的 key => value 結構,json_encode 順序也正常

但是,Chrome 會排序,即使是「字串KEY」、「數字KEY」,一律按照正序排列

所以最終的解決方案是

array_value

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn