Während der Interaktion zwischen dem PHP-Backend und den Client-Daten haben die JSON-Daten manchmal ein unregelmäßiges Format, manchmal handelt es sich um ein Array, manchmal handelt es sich um ein Objekt, was dem Client-Entwickler das Gefühl gibt, dass es gleich zusammenbricht.
Daher ist es der wichtigste Schritt für Front-End- und Back-End-Mitarbeiter, ein notwendiges Verständnis des Prinzips der json_encode-Funktion von PHP zu haben.
Das Array in PHP ist eine universelle Datenstruktur. Im Gegensatz zu anderen Sprachen, die viele restriktive Datentypen definieren, um die Struktur entsprechend den erforderlichen Szenarien zu beschreiben, ist es für PHP-Programmierer schwierig, dem Client klar zu erklären, was zurückgegeben wird. Wie ist die Struktur der Daten?
Es kommt zu einer Situation, in der die Array-Daten offensichtlich über PHP in JSON codiert werden, der Ausgabewert jedoch manchmal ein Array und manchmal ein Objekt ist.
<?php /* 如果你想生成一个json格式的数组格式(Vector)而非对象格式(Map)的,那么数据的下标: 必须是数字索引, 必须从0开始, 必须从小到大依次增加、中间不可以跳跃、顺序不可变动. */ //符合数组 $vector = [ 12, 23, 18 ]; echo json_encode($vector); //符合数组 $vector2 = [ 0 => 12, 1 => 23, 2 => 18 ]; echo json_encode($vector2); //不符合数组,下标有跳跃 $map = [ 0 => 12, 1 => 23, 2 => 18, 4 => 20 ]; echo json_encode($map); //不符合数组,下标顺序不对 $map = [ 0 => 12, 1 => 23, 3 => 18, 2 => 20 ]; echo json_encode($map); //不符合数组,下标没有从0开始 $map_1 = [ 1 => '111', 2 => 'asdfa' ]; echo json_encode($map_1); //典型的对象格式 $map_2 = ['abc' => 1, 'de' => 2, 'fi' => null]; echo json_encode($map_2); /** * 请注意上面的变量命名,对应于Hack中的概念,Vector和Map为两种数据集合类型 * 如果你需要将"索引数组"强制转化成"对象",可以这样写 * json_encode((object) $a); * 或 * json_encode ($a, JSON_FORCE_OBJECT); * */
Was ist die Lösung?
Es handelt sich um eine Klasse, die die beiden Datenstrukturen Vector und Map über PHP kapselt. Beim Erstellen der JSON-Ausgabestruktur werden diese beiden Typen zur Kapselung und Konvertierung verwendet, um die Sicherheit der Struktur sicherzustellen.
Das Obige ist das vom Herausgeber eingeführte PHP-JSON-Array und -Objekt. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der Script House-Website bedanken!