首页 > 解决方案 > 如何将一个 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;
}
}

谢谢你的帮助!

标签: phparraysjson

解决方案


要获得您想要的输出,您可以使用以下代码:

$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 为数组的对象,每个对象都将是内部的单独对象(而不是数组)


推荐阅读