Heim >Backend-Entwicklung >PHP-Tutorial >Eingehende Analyse der PHP-JSON-Formatsteuerung

Eingehende Analyse der PHP-JSON-Formatsteuerung

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-29 09:09:14725Durchsuche

In Bezug auf das Thema JSON kamen nacheinander unerfahrene Freunde zu mir und fragten zum Beispiel, warum ich {"1": "item1", "2": "item2", "3": "item3" ausgebe "} while Not ["item1", "item2", "item3"].

PHP-Array und JS-Array

Ich verwende hier die Syntax von PHP 5.4 oder höher.

Es gibt assoziative Arrays und Indexarrays in PHP, zum Beispiel:

<&#63;php
// 索引数组
$arr = ['item1', 'item2', 'item3'];
// 关联数组
$arr = [
 'name' => '张三',
 'age' => '22',
]; 

Es gibt nur eine Art von Arrays in js, Das ist das Index-Array. Vielleicht werden Sie sagen, dass Sie K/V-Schlüssel-Wert-Paare verwenden können, um assoziative Arrays zu simulieren.

Das K/V-Schlüssel-Wert-Paar sieht so aus, hat aber keine Array-Eigenschaften, daher werde ich es hier nicht im Detail erklären.

Die nach json_encoding des obigen PHP-Arrays erhaltenen JSON-Formate sind ["item1", "item2", "item3"] und {"name": "u5f20u4e09", "age": 22 "}. Das Chinesisch wurde hier in Unicode konvertiert. PHP 5.4 und höher unterstützt den Parameter JSON_UNESCAPED_UNICODE ($arr, JSON_UNESCAPED_UNICODE). " }, es wird jedoch dringend davon abgeraten, so zu schreiben.

Was wir hier bekommen, sind Arrays unter js und json-Strings im Objektformat. Mit anderen Worten, unter welchen Umständen werden Objektformate generiert und unter welchen Umständen werden Arrays generiert generiert werden? Wie sieht es mit dem Format aus?

PHP-Array-Ausgabeformatsteuerung

Ich habe die allgemeinen Situationen aufgelistet, schauen Sie sich einfach den Code an.

<&#63;php
$arr = [ // 不是 0 开始,会输出对象
 1 => 'item1',
 2 => 'item2',
 3 => 'item3',
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"1":"item1","2":"item2","3":"item3"}
$arr = [ // 连续索引,输出数组
 0 => 'item1',
 1 => 'item2',
 2 => 'item3',
];
echo "输出数组: ", json_encode($arr), "\n";
// 输出数组: ["item1","item2","item3"]
$arr = [ // 连续索引,输出数组 
 'item1',
 'item2',
 'item3',
];
echo "输出数组: ", json_encode($arr), "\n";
// 输出数组: ["item1","item2","item3"]
$arr = [ // 索引不连续,输出对象
 0 => 'item1',
 1 => 'item2',
 2 => 'item3',
 5 => 'item5',
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"0":"item1","1":"item2","2":"item3","5":"item5"}
$arr = [ // 包含关联索引,一定输出对象
 0 => 'item1',
 1 => 'item2',
 2 => 'item3',
 'other' => '其他字段'
];
echo "输出对象: ", json_encode($arr), "\n";
// 输出对象: {"0":"item1","1":"item2","2":"item3","other":"\u5176\u4ed6\u5b57\u6bb5"}
// 关联数组 + 索引数组 实例
$arr = [ // 关联数组
 'other' => '其他字段',
 'count' => 3, // 数组个数
 'list' => [ // 索引数组
  'item1',
  'item2',
  'item3',
 ],
];
echo "对象+数组: ", json_encode($arr), "\n";
// 对象+数组: {"other":"\u5176\u4ed6\u5b57\u6bb5","count":3,"list":["item1","item2","item3"]} 

Tatsächlich ist der erste Typ ein Problem, mit dem viele unerfahrene Freunde häufig konfrontiert sind.

Weil sie nach dem Auslesen der Datenbank gerne die ID als Index verwenden und die ID der Datenbank nicht bei 0 beginnt. Schauen Sie sich dieses Beispiel an.

$arr = $User->where($where)->find(); // 读取数据
$list = [];
foreach($arr as $key => $val) { // 遍历数组
 $list[$key] = [
  'name' => $val['name'],
  'age' => $val['age'],
 ];
}
$list['count'] = count($arr); // 其他属性
echo json_encode($list); // 输出 json
// {"1":{"name":"zhangsan","age":22},"2":{"name":"lisi","age":25},"count":2} 

Die letzte Methode ist eine gebräuchlichere Schreibweise. Verwenden Sie benutzerdefinierte Felder und Arrays zusammen, um das Beispiel gerade zu ändern.

$arr = $User->where($where)->find(); // 读取数据
$list = [];
foreach($arr as $key => $val) { // 遍历数组
 $list['list'][] = [ // 修改这里
  'name' => $val['name'],
  'age' => $val['age'],
 ];
}
$list['count'] = count($arr); // 其他属性
echo json_encode($list); // 输出 json
// {"list":[{"name":"zhangsan","age":22},{"name":"lisi","age":25}],"count":2} 

Ich hoffe, dass es für alle hilfreich ist, etwas über die Steuerung des PHP-JSON-Formats zu lernen. Vielen Dank an alle für die anhaltende Unterstützung unserer Website.

Das Obige hat eine ausführliche Analyse der PHP-JSON-Formatsteuerung, einschließlich ihrer Aspekte, vorgestellt. Ich hoffe, dass sie für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn