Оригинальный ответ
В соответствии с вашим кодом $single_order_array
будет перезаписываться в каждом l oop из foreach ($single_order->get_items() as $item)
. Таким образом, в этом массиве вы будете получать данные только для последнего элемента из заказа. Что касается использования array_replace_recursive
Я не совсем понимаю вашу идею. Кстати, как вы получаете исходный массив $order_id
?
РЕДАКТИРОВАТЬ
Попробуйте этот код:
$results=array(); // place this outside all loops
foreach ($order_id as $order_ids) {
//echo '</br>' . $vendor_id . ' ' . $vendor_mail . ' ' . $vendor_name . '</br>';
$orderID = $order_ids->order_id;
$order_date = $order_ids->date_created;
$single_order = wc_get_order($orderID);
echo '</br>';
echo __('ID zamówienia: ') . $orderID . '<br>';
echo __('Data zamówienia: ') . $order_date . '<br>';
$product_quantity = array();
$product_name = array();
$single_order_array=array();
foreach ($single_order->get_items() as $item) {
echo __('Nazwa produktu: ') . $item->get_name() . '<br>';
echo __('Ilość: ') . $item->get_quantity() . '<br><br><br>';
$product_quantity = $item->get_quantity();
$product_name = $item->get_name();
$single_order_array[]=array($product_name => $product_quantity);
}
echo '</br>TABLICA POJEDYNCZEGO ZAMOWIENIA: </br>';
print_r($single_order_array);
echo '</br></br>';
foreach ($single_order_array as $product=>$quantity){
if (array_key_exists($product, $results)){
$results[$product]+=$quantity;}
else {$results += array ($product=>$quantity);
}
}
}
echo '</br>TABLICA CAŁEGO WENDORA : </br>';
print_r($results);
echo '</br></br>';
Может работать, но не тестируется как Я понятия не имею, как данные заказов хранятся в вашем входном массиве $order_id
.