Я получаю Json-массив, выполняя вызов REST. Вот код.
<?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_decode()
поскольку вы уже получили соответствующий объект JSON
stdClass, т. Е. Просто выполните его:
...... $unit_response = call($url, $oauth2_token_response->access_token, 'GET'); $jd = $unit_response; $floors = array(); foreach ($jd->records AS $key => $obj) { ......