php - 如何将一个 JSONObject 中的 JSON 字符串放入数组中进行排序?
问题描述
我有一个 .php 文件,它以 JSON 格式输出产品列表,但它创建了一个大 JSON:
{"monumentid1":"1","name1":"Text","region1":"Text","monumentid2":"2","name2":"Text","region2":"Text","monumentid3":"3","name3":"Text","region3":"Text","monumentid4":"4","name4":"Text","region4":"Text","monumentid5":"111","name5":"Text","region5":"Text"}
...并且我需要将每个 String 像这样排序到数组中:
{"monument1":[{"monumentid1":"1"},{"name1":"Text"},{"region1":"Text"}]} etc.
可以用 PHP 做吗?稍后我需要使用该 JSON。
我目前使用的 PHP 文件:
class SeznamMagnetekApi extends BaseApi
{
public function ToProcess($parametry)
{
$magnetkyInfo = Database::SqlGetFetchAll("select monumentid, name, region from monuments");
$i = 0;
foreach ($magnetkyInfo as $info)
{
$i++;
$this->json['monumentid' . $i] = $info['monumentid'];
$this->json['name' . $i] = $info['name'];
$this->json['region' . $i] = $info['region'];
}
}
}
BaseApi 类:
abstract class BaseApi
{
protected $json = array();
abstract function ToProcess($parametry);
public function WriteJson()
{
$this->json = json_encode($this->json, JSON_UNESCAPED_UNICODE);
echo $this->json;
}
}
谢谢你的帮助!
解决方案
要获得您想要的输出,您可以使用以下代码:
$i = 0;
foreach ($magnetkyInfo as $info)
{
$i++;
$arr[]['monumentid' . $i] = $info['monumentid'];
$arr[]['name' . $i] = $info['name'];
$arr[]['region' . $i] = $info['region'];
$this->json['monumentid' . $i] = $arr;
}
但是 - 我认为最好将 1 个 json 对象作为它的元素:
foreach ($magnetkyInfo as $info)
{
$i++;
$obj = ["monumentid" => $info["monumentid"], "name" => $info["name"], "region" => $info["region"]];
$this->json['monumentid' . $i] = $obj;
}
现在,您拥有 id 为数组的对象,每个对象都将是内部的单独对象(而不是数组)
推荐阅读
- python - 无法从“身份验证”导入名称“bot_token”
- linux - 如何在 aws cli 中使用“cat”命令查看 S3 存储桶中的前 100 行 .csv 文件?
- r - dplyr::summarise 适用于 n() 但不适用于 sd() 或 mean() -“缺少参数“x”,没有默认值”
- python - Python:当条件为真时停止一段时间?
- c# - 如何使用 Unity 将立体图像显示到 VR 耳机
- webpack - 如何在 Next.js 中实现正确的服务器端堆栈跟踪行号?
- java - 使用 java.net.URL 发送 API 密钥
- unity3d - Unity 模糊动画如何修复?
- vb.net - Issue with declare references
- php - How to get min and max values of the custom numeric meta field?