如何将一个 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"}

...我需要将每个字符串这样排序到数组中:


{"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;

}

}

谢谢你的帮助!


万千封印
浏览 205回答 1
1回答

神不在的星期二

要获得您想要的输出,您可以使用以下代码:$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 作为数组的对象,每个对象都将是单独的对象(而不是数组)
打开App,查看更多内容
随时随地看视频慕课网APP