Poszerzyłem to zachowanie w PHP 5.6 (również identyczne w PHP 5.4 do 7.0).Dlaczego json_encode ciąg białych znaków dodaje je do tablicy?
$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);
Wyjścia:
{
"string0": "just a string",
"string1": "abc\n\n\n",
"string2": "\tdef",
"string3": {
"0": "\n\n\n"
},
"string4": {
"0": "\t\n"
}
}
nie musi być powodem takiego zachowania, chciałbym zrozumieć. A także, jeśli znasz sposób, aby zmusić go do zachowania się w taki sam sposób dla ciągów tekstów i białych znaków, byłbym wdzięczny za podzielenie się swoimi pomysłami!
Edytuj. Oto urywek można uruchomić: http://sandbox.onlinephpfunctions.com/code/d797623553c11b7a7648340880a92e98b19d1925
nie mogę odtworzyć tego z PHP 5.5.9. dla mnie string3 i string4 są po prostu pustymi białymi znakami. jednak, co ciekawe, znaki białych znaków są traktowane dosłownie tak samo, jak w przykładzie dla string1 i string2. –
Dodano snipped w moje pytanie. – Vallieres
@JeffPuckettII masz rację 5.5, ale większość wersji 5.6 produkuje powyższy wynik. I wszystkie wersje PHP 7 mogę przetestować. – Vallieres