Zoho CRM API simpleXMLelement получает несколько идентификаторов продуктов

Я работаю с API-интерфейсом Zoho CRM и смог извлечь идентификатор продукта, когда вставлял только один продукт, но не могу понять, как это сделать с несколькими продуктами. https://www.zoho.com/crm/help/api/insertrecords.html#Insert_Multiple_records

Я преобразовываю ответ в simpleXMLElement и могу легко получить первый идентификатор продукта с помощью:

...curl stuff
$data = curl_exec($ch);
$xml = new SimpleXMLElement($data);
$product_id = $xml->result->recorddetail->FL[0];

Вопрос заключается в том, если я отправлю несколько идентификаторов продуктов, как я получу каждый из них в цикле, так как мой код вернет только первый идентификатор продукта успешно. Это пример ответа от 2 продуктов, вставленных в API, и возвращенного ответа:

SimpleXMLElement Object ( [@attributes] => Array ( [uri] =>
/crm/private/xml/Products/insertRecords ) [result] => SimpleXMLElement
Object ( [message] => Record(s) added successfully [recorddetail] => Array (
[0] => SimpleXMLElement Object ( [FL] => Array ( [0] => **2389399000000122065**
[1] => 2017-03-12 21:33:50 [2] => 2017-03-12 21:33:50 [3] =>
SimpleXMLElement Object ( [@attributes] => Array ( [val] => Created By ) )
[4] => SimpleXMLElement Object ( [@attributes] => Array ( [val] => Modified
By ) ) ) ) [1] => SimpleXMLElement Object ( [FL] => Array ( [0] =>
**2389399000000122066** [1] => 2017-03-12 21:33:50 [2] => 2017-03-12 21:33:50
[3] => SimpleXMLElement Object ( [@attributes] => Array ( [val] => Created
By ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [val] =>
Modified By ) ) ) ) ) ) )

Не уверен, что он выделен жирным шрифтом, но два значения, заключенные в ** ** — это то, что я хочу извлечь.

0

Решение

Ключом к этому является понимание того, что это:

$xml->result->recorddetail->FL[0];

Это просто сокращение для этого:

$xml->result[0]->recorddetail[0]->FL[0];

Это должно сделать очевидным, что для доступа ко 2-му recorddetail (с указателем 1), вы могли бы написать это:

$xml->result->recorddetail[1]->FL[0];

Благодаря волшебству SimpleXML вы также можете узнать, сколько их:

count($xml->result->recorddetail);

И наиболее актуально для вашего случая, зациклите их:

foreach ( $xml->result->recorddetail as $recorddetail ) {
$product_id = $recorddetail->FL[0];
}

В заключение, вы, вероятно, хотите $product_id переменная для хранения обычной строки, а не объекта SimpleXML; вы получаете это с помощью «string cast», например так:

$product_id = (string)$recorddetail->FL[0];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]