Is the result after converting an array to json an array or an object? (Travel record)

藏色散人
Release: 2023-04-09 17:46:01
forward
3573 people have browsed it

Recommended: "PHP Video Tutorial"

I often encounter these problems at work recently, so record them~

Here are the explanations Take a look, after json_encode, the results are all strings, but the results I mentioned here are the results after transferring to the front end, because recently more interface data has been written, and this kind of problem is often encountered. If it is only viewed in PHP, Then they can all be arrays...

Question: When converting arrays to json, sometimes they are objects and sometimes they are arrays?

Case 1:

$arr = [1,2,3];//数组下标从0开始的
echo json_encode($arr);     //[1,2,3] 

$arr = [1=>1,2=>2,3=>3];//数组下标不是从0开始
echo json_encode($arr);//{"1":1,"2":2,"3":3}
Copy after login

If you need to return an array at this time, you can handle it like this

$arr = [1=>1,2=>2,3=>3];
echo json_encode(array_values($arr));//[1,2,3]
Copy after login

Case 2:

$arr = [];
$arr[0] = 'xxx';
$arr[1] = 'yyy';
echo json_encode($arr);//["xxx","yyy"] 

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
echo json_encode($arr);//{"1":"yyy","0":"xxx"}
Copy after login

You can see that the subscripts of the assignments are the same, but the order of execution has changed, and the results are also different

The following is a solution suggested by a friend

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
$arr = array_values($arr);
echo json_encode($arr);//["yyy","xxx"]
Copy after login

You can see that there is a problem with the result. The original index of yyy is 1, and the result is 0
The result we want is ["xxx", "yyy"]

Here is a solution

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
ksort($arr);
echo json_encode($arr);//["xxx","yyy"]
Copy after login

Case 3:

$arr = [];
$arr[0] = 'yyy';
$arr[2] = 'xxx';
print_r($arr);
echo json_encode($arr);
/*Array
(
    [0] => yyy
    [2] => xxx
)
{"0":"yyy","2":"xxx"}
*/
Copy after login

Case 4:

$arr = [];
echo json_encode($arr);//[]
Copy after login

Summary:

When converting an array to json, if the index is not 0, 1, 2,... starting from 0 in order, the returned json structure is an object; if you want to return an array , it must be strictly required that the index starts from 0, in order, there can be no broken numbers in the middle                                       

The above is the detailed content of Is the result after converting an array to json an array or an object? (Travel record). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!