Подключаю сервис управления предприятием к сайту Код (Text): $request = new SdfApi_Request( $accessId, $secretKey, $host, true ); $folder = 'incoming'; $status = 'actual'; $response = json_decode( $request->get( '/BumsTaskApiV01/Task/list.api', array( 'Folder' => $folder, 'Status' => $status ) ) ); var_dump($response); var_dump: Код (Text): object(stdClass)#6 (2) { ["data"]=> object(stdClass)#7 (1) { ["tasks"]=> array(2) { [0]=> object(stdClass)#8 (16) { ["Id"]=> int(1000001) ["Name"]=> string(43) "Интеграция" ["Owner"]=> object(stdClass)#9 (3) { ["Id"]=> string(7) "1000000" ["Name"]=> string(27) "Иван Иванович" } } [1]=> object(stdClass)#11 (16) { ["Id"]=> int(1000000) ["Name"]=> string(47) "Протекция" ["Owner"]=> object(stdClass)#12 (3) { ["Id"]=> string(7) "1000000" ["Name"]=> string(27) "Евгений" } } } ["messages"]=> NULL } } Пытаюсь сделать выборку следующим образом: Код (Text): foreach(get_object_vars($response->data->tasks) as $key => $value) { echo $key.':'.$value.PHP_EOL; } Когда в json_encode просто массив - все работает. А вот с методом внутри не разберусь Подскажите, на что надо заменить "$response->data->tasks", чтобы все заработало?
Спасибо за ссылку. Сделал следующим образом: Код (Text): foreach(get_object_vars($response->{'data'}) as $key => $value){ foreach ($value as $k => $v) { echo $k .' = '.$v->Name.' (Исполнитель: '.$v->{'Owner'}->Name.')<br/>'; } } получилось вывести данные: Код (Text): 0 = Интеграция (Исполнитель: Иван Иванович) 1 = Протекция (Исполнитель: Евгений) Появилось два вопроса: 1. Код работает, но можно его как то упростить? Например foreach убрать вложенный.. 2 Не пойму get_object_vars, если его убрать, ничего не меняется. В чем именно его польза? Спасибо
Код (Text): { "status": { "code":"ok", "message":null }, "params": { "Folder":"all", "Status":"any" }, "data": { "tasks": [ { "Id":841, "Name":"Test task", "Status":"accepted", "Deadline":"2010-12-30 16:00:00", "Owner": { "Id":2, "Name":"Director" }, "Responsible": { "Id":651, "Name":"Ivanov Ivan" }, "Favorite":"", "TimeCreated":"2007-12-13 12:24:12", "IsOverdue":true }, { "Id":1394, "Name":"Another task", "Status":"accepted", "Deadline":"", "Owner": { "Id":3, "Name":"Medvedev Dima" }, "Responsible": { "Id":651, "Name":"Ivanov Ivan" }, "Severity": { "Id":1, "Name":"Hot" }, "SuperTask": { "Id":1393, "Name":"Global task" }, "Project": { "Id":30, "Name":"Megaplan API" }, "Favorite":"1", "TimeCreated":"2009-08-17 13:27:28", "Folders":["incoming"] "IsOverdue":false } ] } }
Во первых тут будет " SyntaxError: Unexpected string ", из-за недописанной запятой "TimeCreated":"2009-08-17 13:27:28", "Folders":["incoming"], "IsOverdue":false Код (PHP): $json='{ "status": { "code":"ok", "message":null }, "params": { "Folder":"all", "Status":"any" }, "data": { "tasks": [ { "Id":841, "Name":"Test task", "Status":"accepted", "Deadline":"2010-12-30 16:00:00", "Owner": { "Id":2, "Name":"Director" }, "Responsible": { "Id":651, "Name":"Ivanov Ivan" }, "Favorite":"", "TimeCreated":"2007-12-13 12:24:12", "IsOverdue":true }, { "Id":1394, "Name":"Another task", "Status":"accepted", "Deadline":"", "Owner": { "Id":3, "Name":"Medvedev Dima" }, "Responsible": { "Id":651, "Name":"Ivanov Ivan" }, "Severity": { "Id":1, "Name":"Hot" }, "SuperTask": { "Id":1393, "Name":"Global task" }, "Project": { "Id":30, "Name":"Megaplan API" }, "Favorite":"1", "TimeCreated":"2009-08-17 13:27:28", "Folders":["incoming"], "IsOverdue":false } ] } }'; $json=json_decode($json); foreach($json->data->tasks as $value) { echo nl2br("[Id: {$value->Id} Name: {$value->Name} Owner:{ Id: {$value->Owner->Id} Name: {$value->Owner->Name} }] "); }