You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP遍历PrestaShop API返回XML提取产品价格的问题

解决方案:遍历PrestaShop API返回XML提取product字段

核心问题定位

你代码的核心错误是混淆了XML节点属性和子元素的获取方式:

  • $p->attributes() 仅用于获取节点标签内定义的属性(例如 <product id="97" price="37"> 中的id、price才属于属性)
  • 你给出的XML结构中,price、id等都是product节点的子元素,直接通过对象属性访问即可,不需要调用attributes()

正确实现代码

$opt = array(
    'resource' => 'products',
    'display'  => 'full',
    'filter[id]' => $_GET['id'],
    'postXml' => 'asXML'
);

$xml = $webService->get($opt);

// 遍历所有product节点
foreach ($xml->products->product as $p) {
    // 直接访问子元素,强转成数值类型可避免后续操作出现类型问题
    $price = (float)$p->price;
    $id = (int)$p->id;
    $weight = (float)$p->weight;
    
    // 测试输出
    echo "商品ID:{$id},价格:{$price}\n";
}

排障补充

如果修改后还是无输出,可按以下步骤排查:

  • 先打印返回的XML结构确认API调用成功:echo $xml->asXML(); 看是否能输出完整的XML内容
  • 确认filter[id]参数是否正确,过滤条件下是否有匹配的商品数据
  • 检查PrestaShop WebService权限是否开启了产品的读取权限

内容的提问来源于stack exchange,提问作者Liam Bonactarian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:15:02