Home >Backend Development >PHP Tutorial >PHP uses json_encode to encode variable json_PHP tutorial
This article mainly explains a detail that needs to be paid attention to when using json_encode. Whether it is an array or json returned, it does not mean that this is necessarily an incorrect return result. When the front-end requires an array, the array is Correct result and vice versa
In today’s world where ajax is rampant, json has naturally become an extremely important tool for front-end and back-end interaction. For PHP, the json_encode method is usually used to convert a PHP group number into a json string that can be parsed by the front end. This is also what is described in the PHP manual, but is this the case? Take a look at the following code:
The code is as follows:
$a = array( 'Jack' , 'Sam' , 'Tom' );
echo json_encode( $a );
When JavaScript requests the above code, PHP will parse the array $a into a json string and return it to the front end, but in fact the return result obtained at the front end is an array.
The code is as follows:
[ "Jack" , "Sam" , "Tom" ]
This result may not be what is expected for the front end. For JavaScript, the relationship between arrays and json is very close. You can even simply understand json as an associative array, but this does not mean that the two can be separated. Equal sign, for example, json does not have a length attribute and cannot be numerically indexed. JSON is a key-value pair, and JavaScript arrays strictly speaking do not have "keys". This is quite different from PHP. So why is the return result of json_encode an array?
The array in the PHP code at the beginning of this article is a numerical index array in the strict sense. The json_encode method will return an array string when processing such an array. It needs to meet two conditions at the same time: 1. Numeric index array, 2 . Index values start from 0. This means that the following code will return the same result:
The code is as follows:
$b = array(
'0' => 'Jack',
'1' => 'Sam',
'2' => 'Tom'
);
echo json_encode( $b );
If either of these two conditions is not met, then the json_encode method will actually return the json string:
The code is as follows:
$c = array(
'person-1' => 'Jack',
'person-2' => 'Sam',
'person-3' => 'Tom'
);
echo json_encode( $c );
The results obtained by the front end are as follows:
The code is as follows:
{
'person-1' : 'Jack',
'person-2' : 'Sam',
'person-3' : 'Tom'
};