【问题标题】:How to Nest Value Side of Dictionary in Array Using PHP with JSON_decode and JSON_encode如何使用带有 JSON_decode 和 JSON_encode 的 PHP 在数组中嵌套字典的值端
【发布时间】:2020-06-21 14:27:27
【问题描述】:

在客户端要遵守一大堆复杂的遗留代码,我需要 JSON 看起来像这样:

A. {"book":[{"title":"War and Peace.","author":"Leo Tolstoy"}]}

字典的“值”端是一个包含字典的数组,例如[{}].

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

B. {"book":{"title":"War and Peace","author":"Leo Tolstoy"}}

“价值”方面只是一个字典,例如{}.

如何生成 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));

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

【问题讨论】:

  • 字面意思是['book' => [$rand]]。你的阵列周围只有一个阵列。

标签: php arrays json dictionary


【解决方案1】:

只需将$rand 变量包裹在括号[] 内。很想知道array_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]));
?>

演示: https://3v4l.org/dZJRn

【讨论】:

  • 对于旧版本的 PHP,我认为您需要使用 array($rand) 而不是仅仅添加括号。
  • 是的 [] 在 PHP >= 5.4 中受支持,对于旧的遗留程序,您可以使用 array() 而不是 []
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多