从PHP数组中创建一个新的多维数组
我正在尝试创建一个以供应商为主要ID的新阵列 每个供应商可以提供多种产品。我想将所有产品分配到一个新数组中 此代码生成包含以下信息的产品列表 Supplier id Supplier name Product id Product name Quantity 187 Supplier A 37 Happy Ninja 1 195 Supplier C 70 Flying Ninja 1 187 Supplier A 53 Happy Ninja 1 187 Supplier A 31 Ninja Silhouette 1 193 Supplier B 56 Ninja Silhouette 1 193 Supplier B 50 Patient Ninja 1 187 Supplier A 19 Premium Quality 1从PHP数组中创建一个新的多维数组,php,arrays,woocommerce,Php,Arrays,Woocommerce,我正在尝试创建一个以供应商为主要ID的新阵列 每个供应商可以提供多种产品。我想将所有产品分配到一个新数组中 此代码生成包含以下信息的产品列表 Supplier id Supplier name Product id Product name Quantity 187 Supplier A 37 Happy Ninja 1 195 Supplier C 70 Flying Ninja
global$woodcommerce;
$order_id=123;
$suppliers=array();
/**
*拿到订单
*/
$order=新WC\U订单($order\U id);
$items=$order->get_items();
?>
供应商id
供应商名称
产品id
产品名称
量
有人能指出我要去的方向吗?谢谢。尝试以下方法:
1-填充$suppliers,如下所示:
//This
$suppliers[] = array(
'supplier_id' => $supplier_id,
'product_id' => $product_id,
'product_name' => $product_name,
'quantity' => $quantity
);
//Instead of:
$suppliers[$supplier_id] = array(
'product_id' => $product_id,
'product_name' => $product_name,
'quantity' => $quantity
);
2-填充$suppliers后,按供应商ID排序:
//Get array with $supplier_id values
foreach ($suppliers as $key => $row) {
$colSuppId[$key] = $row['supplier_id'];
}
//Sort $suppliers by $supplier_id
array_multisort($colSuppId, SORT_ASC, $suppliers);
3-从此处创建阵列
$newArray = array();
$bufArray = array();
$bufVal = null;
foreach ($suppliers as $row) {
$supp = $row['supplier_id'];
if (!empty($bufArray) and $bufVal != $supp) {
$newArray[$bufVal] = $bufArray;
$bufArray = array();
}
$bufArray[] = array(
'product_id' => $row['product_id'],
'product_name' => $row['product_name'],
'quantity' => $row['quantity']
);
$bufVal = $supp;
}
if (!empty($bufArray)) {
$newArray[$bufVal] = $bufArray;
}
$suppliers = $newArray;
下次你提问时,这里有一些建议:
//Get array with $supplier_id values
foreach ($suppliers as $key => $row) {
$colSuppId[$key] = $row['supplier_id'];
}
//Sort $suppliers by $supplier_id
array_multisort($colSuppId, SORT_ASC, $suppliers);
$newArray = array();
$bufArray = array();
$bufVal = null;
foreach ($suppliers as $row) {
$supp = $row['supplier_id'];
if (!empty($bufArray) and $bufVal != $supp) {
$newArray[$bufVal] = $bufArray;
$bufArray = array();
}
$bufArray[] = array(
'product_id' => $row['product_id'],
'product_name' => $row['product_name'],
'quantity' => $row['quantity']
);
$bufVal = $supp;
}
if (!empty($bufArray)) {
$newArray[$bufVal] = $bufArray;
}
$suppliers = $newArray;