Я только что создала небольшую программу для проверки JSON и JSON_FORCE_OBJECTПутаница с json_decode второй парами
$tree = [
0 => array
(
'id' => 1,
'parent' => '0',
'name' => 'b',
'surname' => 'myfolder/b'
),
1 => array
(
'id' => 2,
'parent' => 1,
'name' => 'ignore',
'surname' => 'myfolder/ignore2'
),
2 => array
(
'id' => 3,
'parent' => 1,
'name' => 'ignore2',
'surname' => 'myfolder/ignore4'
)
];
var_dump($tree);
$try = json_encode($tree);//To print with key. Also if we decode we get result as object
//echo $try;
echo '<br />';
$try2 = json_decode($try,JSON_FORCE_OBJECT);
var_dump($try2);
$ try2 в точности равен $ дерева ассоциативного массива. Принимая во внимание, если я удалю JSON_FORCE_OBJECT
от этой линии
$try2 = json_decode($try,JSON_FORCE_OBJECT);
Я получаю массив с дочерним объектом. Хотя JSON_FORCE_OBJECT
предполагается использовать с json_encode, но используя его с json_decode, я получаю удивительный результат. Я не могу понять, что происходит внутри? Я подумал, что когда я его кодирую и расшифрую, я должен получить тот же результат. Но я получил тот же результат только тогда, когда использовал JSON_FORCE_OBJECT
. Кто-нибудь может помочь, почему это происходит?
Согласно инструкции, [ 'json_encode()'] (http://php.net/manual/en/function.json-encode.php) принимает ' JSON_FORCE_OBJECT', а ['json_decode()'] (http://php.net/manual/en/function.json-decode.php) - нет. – MonkeyZeus
'json_decode' не имеет флагов опций. Второй параметр является логическим. 'JSON_FORCE_OBJECT' является только опцией для' json_encode'' –
@nik. Я не понял вашу точку зрения. JSON_FORCE_OBJECT не является логическим. Как он может принять этот параметр? –