我想从该数组中获取所有值:

<root>
   <Element1>
       <items>
            <Element0>
                 <sku>AAAA</sku>
             </Element0>
             <Element1>
                 <sku>BBBB</sku>
             </Element1>
        </items>
   </Element1>
        <items>
              <Element0>
                  <sku>ABAB</sku>
               </Element0>
        </items>
   <Element2>
   </Element2>
...
...
</root>

数组来自Magento2 Orders API,所以它是动态的,我实现了所有,但我不能从嵌套数组中获取sku.

这就是我想要做的:

$phpDataArray = json_decode($xml, true);

    if (count($phpDataArray['items']) > 0) {
      $sku = array();
      $dataArray = array();
      foreach ($phpDataArray['items'] as $index => $data) {

        $status = $data['status'];
        $customername = $data['customer_firstname'];
        $customersurname = $data['customer_lastname'];
        $email = $data['customer_email'];
        $increment_id = $data['increment_id'];
        $orderdata = $data['created_at'];
        $total = $data['grand_total'];
        foreach ($data['items'] as $item) {
          $sku= $item['sku'];
        }
        $dataArray[] = [
          "increment_id" => $increment_id,
          "status" => $status,
          "product_sku" => $sku,
          "customername" => $customername,
          "customersurname" => $customersurname,
          "email" => $email,
          "order_date" => $orderdata,
          "total" => $total
        ];
      }
    }

但只显示了最后一个SKU. 示例:在元素1中,我只有BBBB,但我想要AAAA;BBBB

推荐答案

我的解决方案是将每个订单的所有sku个值收集到一个数组中,而不是覆盖它们.这样,您就可以保留与每个订单关联的所有sku个值,如下面的示例所示

$phpDataArray = json_decode($xml, true);

if (count($phpDataArray['items']) > 0) {
    $dataArray = array();
    foreach ($phpDataArray['items'] as $index => $data) {

        $status = $data['status'];
        $customername = $data['customer_firstname'];
        $customersurname = $data['customer_lastname'];
        $email = $data['customer_email'];
        $increment_id = $data['increment_id'];
        $orderdata = $data['created_at'];
        $total = $data['grand_total'];

        $skuArray = array(); //Hold SKUs for this order
        foreach ($data['items'] as $item) {
            $skuArray[] = $item['sku']; //Accumulate SKUs in an array
        }
        
        $skuString = implode(';', $skuArray);

        $dataArray[] = [
            "increment_id" => $increment_id,
            "status" => $status,
            "product_sku" => $skuString, 
            "customername" => $customername,
            "customersurname" => $customersurname,
            "email" => $email,
            "order_date" => $orderdata,
            "total" => $total
        ];
    }
}

Php相关问答推荐

419注册期间Laravel 11中的错误

try 修改这个PHP代码如果语句在WordPress""

PHP Array to Powershell exec命令Args

WordPress:将自定义单选输入字段添加到用户配置文件

在WooCommerce管理订单列表中显示项目总权重

多行PHP属性声明中是否允许单行注释

如何在PHP中出现弃用警告时触发错误?

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

是否使用联系人表单7 wpcf7_Feedback_Response输出答复中的html?

Mockery在模拟Redis连接时抛出错误:Mockery\Exception\BadMethodCallException

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

PHP访问子数组列表出错结果和长度

WooCommerce 回购自定义插件:如何更新用户钱包?

在WooCommerce购物车和 checkout 页面中更改总计文本

适当的时区处理 Laravel / Carbon

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?

如何限制for循环php中的条目数

WordPress 函数 get_post(post_id) 是否查询数据库?

如何在运行 update_post_meta 后更新 wp_wc_product_attributes_lookup 表?

为什么 PDO 允许使用带命名占位符的索引数组,但仅在禁用仿真时才允许?