【问题标题】:Zoho CRM API simpleXMLelement get multiple product IDsZoho CRM API simpleXMLelement 获取多个产品 ID
【发布时间】:2017-03-13 04:52:02
【问题描述】:

我正在使用 Zoho CRM api,我能够在仅插入一个产品时提取产品 ID,但不知道如何处理多个产品。 https://www.zoho.com/crm/help/api/insertrecords.html#Insert_Multiple_records

我将响应转换为 simpleXMLElement,我可以通过以下方式轻松获得第一个产品 ID:

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

问题是,如果我有多个产品 ID 被发回,我将如何在循环中获取每个产品 ID,因为我的代码只会成功返回第一个产品 ID。这是 api 中插入的 2 个产品的响应和返回响应的示例:

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 ) ) ) ) ) ) )

不确定它是否以粗体显示,但 ** ** 中的两个值是我要提取的。

【问题讨论】:

  • 在这样的问题中,最好展示一个实际 XML 的示例,而不是 SimpleXML,因为print_r/var_dump 不能很好地处理 SimpleXML,而且任何人都不能从 XML可以重现您的代码以检查他们的解决方案。

标签: php object simplexml crm zoho


【解决方案1】:

关键是要明白这一点:

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

只是这个的简写:

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

这应该很明显,要访问第二个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 对象;你可以通过“字符串转换”得到它,如下所示:

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

【讨论】:

  • 感谢 IMSoP,感谢您的详细解释,解决方案现在完美运行并且更容易理解!
猜你喜欢
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多