Ist das Ergebnis nach der Konvertierung eines Arrays in JSON ein Array oder ein Objekt? (Reisebericht)

藏色散人
Freigeben: 2023-04-09 17:46:01
nach vorne
3602 Leute haben es durchsucht

Empfehlung: „PHP-Video-Tutorial

Diese Probleme stoßen in letzter Zeit häufig bei der Arbeit auf, also notieren Sie sie ~

Ich möchte hier erklären, dass nach json_encode alle Ergebnisse Zeichenfolgen sind, aber ich spreche von den Ergebnissen ungefähr hier Es ist das Ergebnis der Konvertierung in das Frontend. Da ich in letzter Zeit viele Schnittstellendaten geschrieben habe, stoße ich häufig auf dieses Problem. Wenn ich es nur in PHP betrachte, kann es sich um Arrays handeln

Problem:

Array in JSON konvertieren, manchmal ein Objekt, manchmal ein Array?

Fall 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}
Nach dem Login kopieren
Wenn Sie zu diesem Zeitpunkt ein Array zurückgeben müssen, können Sie das so handhaben

$arr = [1=>1,2=>2,3=>3];
echo json_encode(array_values($arr));//[1,2,3]
Nach dem Login kopieren

Fall 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"}
Nach dem Login kopieren
Sie können sehen, dass die Indizes der Zuweisung die sind Das Gleiche, nur die Ausführungsreihenfolge Es hat sich geändert und das Ergebnis ist anders

Das Folgende ist die Lösung, die ein Freund gesagt hat

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
$arr = array_values($arr);
echo json_encode($arr);//["yyy","xxx"]
Nach dem Login kopieren

Sie können sehen, dass es ein Problem mit dem Ergebnis gibt. Der ursprüngliche Index von yyy ist 1, und Das Ergebnis ist 0

Das Ergebnis, das wir wollen [ „xxx“, „yyy“]


Hier ist eine Lösung

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
ksort($arr);
echo json_encode($arr);//["xxx","yyy"]
Nach dem Login kopieren

Fall 3:

$arr = [];
$arr[0] = 'yyy';
$arr[2] = 'xxx';
print_r($arr);
echo json_encode($arr);
/*Array
(
    [0] => yyy
    [2] => xxx
)
{"0":"yyy","2":"xxx"}
*/
Nach dem Login kopieren

Fall 4:

$arr = [];
echo json_encode($arr);//[]
Nach dem Login kopieren

Zusammenfassung:

Wenn das Array in JSON konvertiert wird und der Index nicht 0, 1, 2, ... ist, beginnend mit 0, ist die zurückgegebene JSON-Struktur ein Objekt. Wenn Sie ein Array zurückgeben möchten, müssen Sie unbedingt den Index angeben bei 0 beginnen, der Reihe nach, und es dürfen keine unterbrochenen Zahlen in der Mitte stehen                                          

Das obige ist der detaillierte Inhalt vonIst das Ergebnis nach der Konvertierung eines Arrays in JSON ein Array oder ein Objekt? (Reisebericht). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:learnku.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage