【问题标题】:Set same key value json PHP [duplicate]设置相同的键值json PHP [重复]
【发布时间】:2016-01-30 02:38:44
【问题描述】:

我需要与我的 java 类中的解析器 json 进行通信,以使用图像填充网格视图。下面的php代码正在输出:

{"posts":["http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",    
"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg"]}

应该怎么写才能设置相同的键值“images”输出?:

{"posts":[{"images":"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg", 
"images":"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"images":"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"images":"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg",
"images":"http://fisioterapeutacamila.com/iMoveis/img/apto01.jpg"}]}

PHP 文件:

$sql = "SELECT * FROM iMoveis";
$result = mysqli_query($mysqli, $sql);

$response = array();
$images = array();

while($row = mysqli_fetch_assoc($result)){

  $images[] = $row['img1'];
  $images[] = $row['img2'];
  $images[] = $row['img3'];
  $images[] = $row['img4'];
  $images[] = $row['img5'];

}

$response['posts'] = $images;

echo json_encode($response, JSON_UNESCAPED_SLASHES);

【问题讨论】:

    标签: php json


    【解决方案1】:

    在一个对象中有两次相同的键是无效的。他们只会互相覆盖。你能做的最好的就是让它成为你数组中的一个键:

    $images = array('images' => array());
    
    while($row = mysqli_fetch_assoc($result)){
    
      $images['images'][] = $row['img1'];
      $images['images'][] = $row['img2'];
      $images['images'][] = $row['img3'];
      $images['images'][] = $row['img4'];
      $images['images'][] = $row['img5'];
    }
    

    它会输出这样的东西(注意转义):

    {
        "posts":{
            "images":[
                "http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg",
                "http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg",
                "http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg",
                "http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            ]
        }
    }
    

    根据 cmets,对象数组:

    $images = array();
    
    while ($row = mysqli_fetch_assoc($result)) {
        $images[] = array('image' => $row['img1']);
        $images[] = array('image' => $row['img2']);
        $images[] = array('image' => $row['img3']);
        $images[] = array('image' => $row['img4']);
        $images[] = array('image' => $row['img5']);
    }
    

    产生以下输出:

    {
    
        "posts":[
            {
                "image":"http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            },
            {
                "image":"http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            },
            {
                "image":"http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            },
            {
                "image":"http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            },
            {
                "image":"http:\/\/fisioterapeutacamila.com\/iMoveis\/img\/apto01.jpg"
            }
        ]
    
    }
    

    【讨论】:

    • 好的,但这不是我需要的输出。我需要在我的 java 类中找到字符串“images”。不是数组“图像”
    • 正如我所说,你“需要”的输出是无效的。 json_encode不可能输出这个。
    • 好的,请看这里javatechig.com/?json=get_recent_posts&count=45。在数组“posts”中有一个带有字符串“url”的数组“附件”。我使删除“附件”并将“url”更改为“images”变得更加简单。在每个“url”上,他都会获得价值。
    • 那根本不是同一种格式。在那里,你有一个对象数组。在您的示例中,您有一个包含单个对象的数组。我将更新我的答案以显示链接格式的解决方案
    • 我建议使用这样的网站更清楚地查看不同的结构:json.parser.online.fr
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多