PHP陣列轉json后,元素變為object的坑🙈
今天專案遇到一個bug,組件排序是用陣列做的排序,所以遇到了排序后的陣列轉為json字串后,前端決議后變為了物件,導致了出現bug,自己研究了一下發現了一個坑,
首先測驗key有序且下標從0開始的一個索引陣列,代碼如下:
<?php
$a[0] = '1a';
$a[1] = '2a';
$a[2] = '3a';
$b['a'] = $a;
$jStr = json_encode($b);
echo $jStr;
//結果是這樣的
{"a":["1a","2a","3a"]}
可以看到這時,josn里的元素是陣列,符合預期,
接下來試一下下標0開始,但是key無序的索引陣列
<?php
$a[0] = '1a';
$a[2] = '2a';
$a[1] = '3a';
$b['a'] = $a;
$jStr = json_encode($b);
echo $jStr;
//結果是這樣的
{"a":{"0":"1a","2":"2a","1":"3a"}}
這個時候已經可以看到,其中的a陣列已經被json轉為了物件
這個時候突發奇想,試一下key有序但是下標不是從0開始的索引陣列:
<?php
$a[1] = '1a';
$a[2] = '2a';
$a[3] = '3a';
$b['a'] = $a;
$jStr = json_encode($b);
echo $jStr;
//結果如下:
{"a":{"1":"1a","2":"2a","3":"3a"}}
可以看到即使索引陣列下標連續,但是下標key不是從0開始的索引陣列,依然是會被轉換為物件,
結論
如果也遇到了類似的需求,需要某種排序要用到這一步,一定要注意一下這里,要轉換為從0開始,下標連續不間斷的新陣列,json_encode后才會是一個陣列的形式,
我后來是轉換為從0開始下標的新陣列,并且使用ksort之后,json才成功轉換為了想要的陣列格式,
遇到的坑記錄一下,
CSDN潛伏多年了,第一次寫博客,望各位大佬不要見笑哈哈哈,😅😅😅😅😅
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/189034.html
標籤:java
上一篇:關于maven創建java-web工程加載過慢如何解決問題
下一篇:Node.js 15 正式版發布
