我试图从我的API中提取JSON数据,并从每个键中获取数据,以便在HTML / CSS中很好地显示。现在无法获取数据。
这是我的db对象:
[
{
"_id":"54bd5fbb646174009a450001",
"productname":"Product 1",
"overview":"Overview Title",
"benefits":
[
"List item 1",
"List item 2",
"List item 3"
]
}
]
我找到了this answer here,并且var_dump正常工作,它在页面上显示我的db对象。 这是我更新的wordpress php插件:
<?php
add_shortcode('mis', function($atts, $data) {
$service_url = 'http://local.web.tt.com:8615/api/users';
// Initiate curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$service_url);
$result=curl_exec($ch);
curl_close($ch);
// Will dump a beauty json :3
// var_dump(json_decode($result, true));
$data = (json_decode($result, true));
var_dump($data);
$data = add_shortcode (
array(
'name' => 'name',
'overview' => 'overview',
'benefits' => 'benefits'
), $data
);
extract($data);
$content .='
<style>li { margin-left: 20px; }</style>
<h2>$name</h2>
<p>$overview</p>
<ul>
<li>$data["benefits"][0]</li>
<li>$data["benefits"][2]</li>
</ul>';
return $content;
});
但是我无法获取数据:
这就是我的问题所在:
$data = (json_decode($result, true));
var_dump($data);
$data = add_shortcode (
array(
'name' => 'name',
'overview' => 'overview',
'benefits' => 'benefits'
), $data
);
extract($data);
$content .='
<style>li { margin-left: 20px; }</style>
<h2>$name</h2>
<p>$overview</p>
<ul>
<li>$data["benefits"][0]</li>
<li>$data["benefits"][1]</li>
</ul>';
return $content;
如何将var_dump中的数据导入$ content变量中的右键/变量?
答案 0 :(得分:2)
这部分代码很奇怪 - 它打算做什么?
$data = add_shortcode (
array(
'name' => 'name',
'overview' => 'overview',
'benefits' => 'benefits'
), $data
);
extract($data);
要访问您的数据,您只需执行
即可$data[0]['productname']
您还在字符串内部(''
内)输出变量。要将数据输入输出,请尝试:
$data = (json_decode($result, true));
var_dump($data);
$product = $data[0];
$content = '<style>li { margin-left: 20px; }</style>';
$content .='<h2>' . $product['productname'] . '</h2>
<p>' . $product['overview'] . '</p>
<ul>
<li>' . $product["benefits"][0] . '</li>
<li>' . $product["benefits"][1] . '</li>
</ul>';
或循环:
$data = (json_decode($result, true));
$content = '<style>li { margin-left: 20px; }</style>';
foreach($data as $product) {
$content .='<h2>' . $product['productname'] . '</h2>
<p>' . $product['overview'] . '</p>
<ul>';
foreach($product['benefits'] as $benefit) {
$content .= '<li>' . $benefit . '</li>';
}
$content .= '</ul>';
}