在php表中使用Json数据
我通过REST调用得到一个Json数组。这是代码在php表中使用Json数据,php,arrays,json,rest,html-table,Php,Arrays,Json,Rest,Html Table,我通过REST调用得到一个Json数组。这是代码 <?php include 'header.php' ; ?> <?php $base_url = "http://tic.sugarcrmdemo.com/rest/v10"; $username = "sereneintegration"; $password = "Sugar123!"; function call( $url, $oauthtoken='', $type='GET', $
<?php include 'header.php' ; ?>
<?php
$base_url = "http://tic.sugarcrmdemo.com/rest/v10";
$username = "sereneintegration";
$password = "Sugar123!";
function call(
$url,
$oauthtoken='',
$type='GET',
$arguments=array(),
$encodeData=true,
$returnHeaders=false
)
{
$type = strtoupper($type);
if ($type == 'GET')
{
$url.= "?" . http_build_query($arguments);
}
$curl_request = curl_init($url);
if ($type == 'POST')
{
curl_setopt($curl_request, CURLOPT_POST, 1);
}
elseif ($type == 'PUT')
{
curl_setopt($curl_request, CURLOPT_CUSTOMREQUEST, "PUT");
}
elseif ($type == 'DELETE')
{
curl_setopt($curl_request, CURLOPT_CUSTOMREQUEST, "DELETE");
}
curl_setopt($curl_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl_request, CURLOPT_HEADER, $returnHeaders);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_request, CURLOPT_FOLLOWLOCATION, 0);
if (!empty($oauthtoken))
{
$token = array("oauth-token: {$oauthtoken}");
curl_setopt($curl_request, CURLOPT_HTTPHEADER, $token);
}
if (!empty($arguments) && $type !== 'GET')
{
if ($encodeData)
{
$arguments = json_encode($arguments);
}
curl_setopt($curl_request, CURLOPT_POSTFIELDS, $arguments);
}
$result = curl_exec($curl_request);
if ($returnHeaders)
{
list($headers, $content) = explode("\r\n\r\n", $result ,2);
foreach (explode("\r\n",$headers) as $header)
{
header($header);
}
return trim($content);
}
curl_close($curl_request);
$response = json_decode($result);
return $response;
}
$url = $base_url . "/oauth2/token";
$oauth2_token_arguments = array(
"grant_type" => "password",
"client_id" => "sugar",
"client_secret" => "",
"username" => $username,
"password" => $password,
"platform" => "base"
);
$oauth2_token_response = call($url, '', 'POST', $oauth2_token_arguments);
$url = $base_url . "/SREV1_Property/48f10d2c-eca2-9163-77fb-56c7677240e2/link/srev1_property_srev1_unit";
$unit_response = call($url, $oauth2_token_response->access_token, 'GET');
$json = $unit_response;
$jd = json_decode(json_encode($json), 1);
$floors = array();
foreach ($jd->records AS $key => $obj) {
$f = $obj->unit_floor;
$id = $obj->id;
$name = $obj->name;
$suite = $obj->suite;
$sf = $obj->sf;
$floors[$f][$suite]['name'] = $name;
$floors[$f][$suite]['id'] = $id;
$floors[$f][$suite]['sf'] = $sf;
}
//sort floors in desc order
krsort($floors);
foreach($floors as $id => $floor){
ksort($floors[$id]);
}
print '<table class="data-table" >';
foreach($floors as $floor => $suites){
$sqf = 0;
print '<tr>';
print '<td>FLOOR: '.$floor.'</td>';
foreach($suites AS $suite => $value){
$sqf += $value['sf'];
print'<td>Suite:'.$suite.'<br>SF:'.$value['sf'].'</td>';
}
print '<td>'.$sqf.'</td>';
print '</tr>';
}
print '</table>';
?>
执行此操作时,我会收到一个错误,如“为foreach()提供的参数无效”“尝试获取非对象的属性”等等。删除json\u decode()
,因为您已经收到了正确的json
stdClass对象,即,只需将其设置为:
......
$unit_response = call($url, $oauth2_token_response->access_token, 'GET');
$jd = $unit_response;
$floors = array();
foreach ($jd->records AS $key => $obj) {
......
请删除不必要的代码。我正在计算每个循环4次。哪个是错误?@mitksoft:非常感谢你,伙计,。它起作用了,。我会好好招待你的。