Ich habe dieses Verhalten auf PHP 5.6 (auch in PHP 5.4 bis 7.0 identisch) stummled.Warum fügt json_encode einer Whitespace-Zeichenfolge ein Array hinzu?
$note = new SimpleXMLElement('<Note></Note>');
$note->addChild("string0", 'just a string');
$note->addChild("string1", "abc\n\n\n");
$note->addChild("string2", "\tdef");
$note->addChild("string3", "\n\n\n");
$note->addChild("string4", "\t\n");
$json = json_encode($note, JSON_PRETTY_PRINT);
print($json);
Ausgänge:
{
"string0": "just a string",
"string1": "abc\n\n\n",
"string2": "\tdef",
"string3": {
"0": "\n\n\n"
},
"string4": {
"0": "\t\n"
}
}
Es muss ein Grund für dieses Verhalten sein, würde ich gerne verstehen. Und auch wenn Sie wissen, wie man es zwingen kann, sich bei Texten und Leerzeichen so zu verhalten, würde ich mich freuen, wenn Sie Ihre Ideen teilen!
Bearbeiten. Hier ist ein Ausschnitt Sie ausführen können: http://sandbox.onlinephpfunctions.com/code/d797623553c11b7a7648340880a92e98b19d1925
I 5.5.9 dieses mit PHP nicht wiedergeben kann. Für mich sind string3 und string4 nur leere Leerzeichen. Wie auch immer, merkwürdigerweise werden die Whitespace-Zeichen genauso wie in Ihrem Beispiel für String1 und String2 verwendet. –
Hinzugefügt die in meiner Frage geschnippt. – Vallieres
@JeffPuckettII Sie sind auf 5.5, aber die meisten 5.6 Versionen produzieren das obige Ergebnis. Und alle Versionen von PHP 7 konnte ich testen. – Vallieres