Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der JSON-Formatsteuerung in PHP

Detaillierte Erläuterung der JSON-Formatsteuerung in PHP

*文
*文Original
2017-12-27 17:58:461654Durchsuche

JSON wird aufgrund seiner leistungsstarken Übertragung und Analyse häufig in der Datenübertragung eingesetzt. In diesem Artikel werden hauptsächlich relevante Informationen zur detaillierten Analyse der PHP-JSON-Formatsteuerung vorgestellt. Ich hoffe, es hilft allen.

In Bezug auf das JSON-Problem kamen nacheinander unerfahrene Freunde zu mir und fragten zum Beispiel, warum ich {"1": "item1", "2": "item2", "3" ausgebe :"item3 "} anstelle von ["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 Index-Arrays in PHP, zum Beispiel:


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


In js gibt es nur eine Art von Array, nämlich das Index-Array. Vielleicht können Sie K/V-Schlüssel-Wert-Paare verwenden, 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.


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


Tatsächlich ist der erste Typ ein Problem, auf das viele unerfahrene Freunde häufig stoßen.

Weil sie nach dem Auslesen der Datenbank die ID gerne 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] = [
  &#39;name&#39; => $val[&#39;name&#39;],
  &#39;age&#39; => $val[&#39;age&#39;],
 ];
}
$list[&#39;count&#39;] = 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, um das Beispiel gerade zu ändern . .


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



Verwandte Empfehlungen:

PHP löst JSON-Chinesisch-Anzeigeproblem

PHP konvertiert Index-Array in JSON

Einführung in Anwendungsbeispiele von json_encode in PHP

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der JSON-Formatsteuerung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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