如何使用带有JSON_解码和JSON_编码的PHP在数组中嵌套字典的值端

如何使用带有JSON_解码和JSON_编码的PHP在数组中嵌套字典的值端,php,arrays,json,dictionary,Php,Arrays,Json,Dictionary,在客户端,为了遵守一大堆复杂的遗留代码,我需要JSON如下所示: A. {"book":[{"title":"War and Peace.","author":"Leo Tolstoy"}]} 其中,字典的“值”端是包含字典的数组,例如[{}] 但是,检索随机项目时,我的服务器代码输出以下内容: B. {"book":{"title":"War

在客户端,为了遵守一大堆复杂的遗留代码,我需要JSON如下所示:

A. {"book":[{"title":"War and Peace.","author":"Leo Tolstoy"}]}
其中,字典的“值”端是包含字典的数组,例如
[{}]

但是,检索随机项目时,我的服务器代码输出以下内容:

B. {"book":{"title":"War and Peace","author":"Leo Tolstoy"}}
其中“value”端只是一个字典,例如
{}

如何生成JSON,使其看起来像A而不是B

以下是服务器上当前正在发生的生成B的操作: 数据实际上存储在JSON中,如下所示:

$str = '[{"title":"War and Peace","author":"Leo Tolstoy"}]';

The code that outputs a random item is:

$array = json_decode($str, true); 
$rand = $array[array_rand($array)];
echo json_encode(array('book'=>$rand));

如何将字典放在方括号内的值端,例如
[{}]

只需将您的
$rand
变量括在方括号内
[]
。想知道这里的
array\u rand()
的用途是什么吗?

<?php 
$str = '[{"title":"War and Peace","author":"Leo Tolstoy"}]';
$array = json_decode($str, true); 
$rand = $array[array_rand($array)];
echo json_encode(array('book'=>[$rand]));
?>


演示:

字面意思是
['book'=>[$rand]]
。在数组周围再加一个数组。对于较旧版本的PHP,我认为您需要使用数组($rand),而不仅仅是添加括号。是的,
[]
在PHP>=5.4中受支持,对于旧的遗留程序,您可以使用数组()而不是[]