Я пытаюсь извлечь данные JSON из моего API и получить данные из каждого ключа, чтобы хорошо отображать HTML / CSS. Прямо сейчас возникают проблемы с получением данных.
Это мой объект db:
[ { "_id":"54bd5fbb646174009a450001", "productname":"Product 1", "overview":"Overview Title", "benefits": [ "List item 1", "List item 2", "List item 3" ] } ]
Я нашел здесь этот ответ , и 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, в правые клавиши / vars в моей переменной $ content?
Этот раздел кода довольно странный – что он должен делать?
$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>'; }