PHP 與 JavaScript 串接經常回傳 JSON 格式,但是會遇到 PHP 的 Array 預設 Index (Assoc array key reference index) 都會有 1、2、3 ...,要怎麼移除這 Index 在傳給 JavaScript 呢?
PHP 如何為 json_encode 移除 Array Index
PHP 要移除 Array Index,等於就是只要 Array 的 Value 值,可以使用 array_values 的 Function。
要串接在任何層級,遇到此情況,都可以使用。
- <?php
- $a = [
- 1 => 'a',
- 2 => 'b',
- 3 => 'c',
- 4 => [
- 1 => 'aa',
- 2 => 'bb',
- 3 => 'cc',
- ]
- ];
- print_r('$a: ' . json_encode($a)); // {"1":"a","2":"b","3":"c","4":{"1":"aa","2":"bb","3":"cc"}}
- echo "\n";
- print_r('$a: ' . json_encode(array\_values($a))); // ["a","b","c",{"1":"aa","2":"bb","3":"cc"}]
- echo "\n";
- print_r('$a[4]: ' . json_encode($a[4])); // {"1":"aa","2":"bb","3":"cc"}
- echo "\n";
- print_r('$a[4]: ' . json_encode(array\_values($a[4]))); // ["aa","bb","cc"]
- echo "\n";
- print_r('$a: ' . json_encode($a)); // {"1":"a","2":"b","3":"c","4":{"1":"aa","2":"bb","3":"cc"}}
- echo "\n";
- $a[4] = array_values($a[4]); // only [4] remove index
- print_r('$a: ' . json_encode($a) . ' ([4] remove index)'); // {"1":"a","2":"b","3":"c","4":["aa","bb","cc"]}
- echo "\n";
- // $a: {"1":"a","2":"b","3":"c","4":{"1":"aa","2":"bb","3":"cc"}}
- // $a: ["a","b","c",{"1":"aa","2":"bb","3":"cc"}]
- // $a[4]: {"1":"aa","2":"bb","3":"cc"}
- // $a[4]: ["aa","bb","cc"]
- // $a: {"1":"a","2":"b","3":"c","4":{"1":"aa","2":"bb","3":"cc"}}
- // $a: {"1":"a","2":"b","3":"c","4":["aa","bb","cc"]} ([4] remove index)
- ?>