为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 php 访问 JSON 数组并将其连接到 html

如何使用 php 访问 JSON 数组并将其连接到 html

PHP
宝慕林4294392 2023-08-19 17:50:20
我正在使用 API 从购物网站获取优惠,并收到以下 JSON 响应 -{    "update_time": "2020-07-23 22:01:31",    "offers": [{        "products": [{            "title": "Product Name",            "endDate": "2020-07-24 03:55:01",            "url": "https://store.com/productid",            "offerPercent": 87,            "offerPrice": "12.74",            "id": "3cbfdc55",            "normalPrice": "99.99",            "reviewRating": 4.7428455,            "imageUrl": "https://store.com/productid/image",            "totalReviews": "1856"        }, { //This repeats alot of times我尝试使用 PHP 来:1 将数据检索到PHP中2 循环遍历所有项目,存储所有参数,如url、title等。3 将其与一些 html(如 div 标签)连接起来,例如:$html = '';$html = $html . '<div>Title' . $title .'</div>'; //Repeating this for each item?这可能吗?如果可以,怎么做?你能指出我正确的方向吗?编辑: 我使用 json_decode 将 json 转换为 php ($someArray json_decode($jsonlink, true);然后我用来foreach读取内容foreach ($someArray as $key => $value) {    echo $value[1][1];}并且网页显示为空白。我究竟做错了什么。
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

使用解码 JSON 后,json_decode您可以循环访问这样的项目(使用提供的代码作为示例):


// $raw_json would be the json you received

$data = json_decode($raw_json);


$html = "";

foreach($data->offers as $offer){

    // $offer now has all of the child properties e.g. $offer->products

    foreach($offer->products as $product){

        // $product now has all of the child properties e.g. $product->title

        $html .= "<div>Title: {$product->title}</div>";

    }


}

json_decode有第二个参数,您可以传递该参数true以确保它返回关联数组,这意味着您可以访问$variable["propName"]. 这会将上面的代码更改为:


// $raw_json would be the json you received

$data = json_decode($raw_json, true);


$html = "";

foreach($data['offers'] as $offer){

    // $offer now has all of the child properties e.g. $offer['products'[

    foreach($offer['products ']as $product){

        // $product now has all of the child properties e.g. $product['title']

        $html .= "<div>Title: {$product['title']}</div>";

    }

}


查看完整回答
反对 回复 2023-08-19
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您需要在包含所需数据的数组内循环。


$data = json_decode($raw_json);

foreach ($data['offers']['products] as $product) {

    echo $product['title'];

}

这就是您在网站上显示数据的方式。


如果你想用 html 和 css 样式显示数据:


首先我要做的是复制 html 组件,如引导卡、行、列等。

然后将其粘贴到变量上

$html = '<div>

<h1>here goes my div</h1>

<img src="here/goes/your/url.png" />

<p>Description</p>

</div>';

然后,将虚拟数据替换为 foreach 数组中您自己的数据:

$data = json_decode($raw_json);

 foreach ($data['offers']['products'] as $product) {

  $html = '<div>

  <h1>'.$product['title'].'</h1>

  <img src="'.$product['imageUrl'].'" />

  <p>'.$product['normalPrice'].'</p>

  </div>';

 }

最后使用echo来渲染组件

$data = json_decode($raw_json);

 foreach ($data['offers']['products'] as $product) {

  $html = '<div>

  <h1>'.$product['title'].'</h1>

  <img src="'.$product['imageUrl'].'" />

  <p>'.$product['normalPrice'].'</p>

  </div>';

 echo $html;

 }


查看完整回答
反对 回复 2023-08-19
?
FFIVE

TA贡献1797条经验 获得超6个赞

是的,您可以使用 php 中的 json_decode 将 json 对象转换为 php 结构,这会将 json 转换为像这样的 php 数组。

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
json_decode($json)

输出将是这样的。

object(stdClass)#1 (5) {["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)

}

之后,您必须使用递归函数或 foreach 来读取对象,然后获取并打印您需要的信息。

查看完整回答
反对 回复 2023-08-19
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信