我想从这个数组中获取所有值:
<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 订单 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。 示例:在 element1 中我只有 BBBB,但我想要 AAAA;BBBB
在
$data['items']
迭代之前,初始化一个数组并将元素推入其中。这样您就不会覆盖 $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'];
$sku = [];// <- here
foreach ($data['items'] as $item) {
$sku[] = $item['sku'];// <- and here
}
$dataArray[] = [
"increment_id" => $increment_id,
"status" => $status,
"product_sku" => $sku,
"customername" => $customername,
"customersurname" => $customersurname,
"email" => $email,
"order_date" => $orderdata,
"total" => $total
];
}
}