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

我正在使用 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];

}

并且网页显示为空白。我究竟做错了什么。


宝慕林4294392
浏览 153回答 3
3回答

神不在的星期二

使用解码 JSON 后,json_decode您可以循环访问这样的项目(使用提供的代码作为示例):// $raw_json would be the json you received$data = json_decode($raw_json);$html = "";foreach($data->offers as $offer){&nbsp; &nbsp; // $offer now has all of the child properties e.g. $offer->products&nbsp; &nbsp; foreach($offer->products as $product){&nbsp; &nbsp; &nbsp; &nbsp; // $product now has all of the child properties e.g. $product->title&nbsp; &nbsp; &nbsp; &nbsp; $html .= "<div>Title: {$product->title}</div>";&nbsp; &nbsp; }}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){&nbsp; &nbsp; // $offer now has all of the child properties e.g. $offer['products'[&nbsp; &nbsp; foreach($offer['products ']as $product){&nbsp; &nbsp; &nbsp; &nbsp; // $product now has all of the child properties e.g. $product['title']&nbsp; &nbsp; &nbsp; &nbsp; $html .= "<div>Title: {$product['title']}</div>";&nbsp; &nbsp; }}

慕尼黑5688855

您需要在包含所需数据的数组内循环。$data = json_decode($raw_json);foreach ($data['offers']['products] as $product) {&nbsp; &nbsp; 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);&nbsp;foreach ($data['offers']['products'] as $product) {&nbsp; $html = '<div>&nbsp; <h1>'.$product['title'].'</h1>&nbsp; <img src="'.$product['imageUrl'].'" />&nbsp; <p>'.$product['normalPrice'].'</p>&nbsp; </div>';&nbsp;}最后使用echo来渲染组件$data = json_decode($raw_json);&nbsp;foreach ($data['offers']['products'] as $product) {&nbsp; $html = '<div>&nbsp; <h1>'.$product['title'].'</h1>&nbsp; <img src="'.$product['imageUrl'].'" />&nbsp; <p>'.$product['normalPrice'].'</p>&nbsp; </div>';&nbsp;echo $html;&nbsp;}

FFIVE

是的,您可以使用 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 来读取对象,然后获取并打印您需要的信息。
打开App,查看更多内容
随时随地看视频慕课网APP