php使用customer_id创建一个assoc数组



我想从下面的这样的数组创建一个php关联数组

array:3 [▼
0 => array:7 [▼
"item_id" => "1"
"customer_id" => "53453"
"name" => "Item3"
"price" => 0
"quantity" => 1
]
1 => array:7 [▼
"item_id" => "3"
"customer_id" => "53453"
"name" => "Item1"
"price" => 0
"quantity" => 1
]
2 => array:7 [▼
"item_id" => "2"
"customer_id" => "765656"
"name" => "Item2"
"price" => 0
"quantity" => 1
]
]

我想从这个数组中创建一个具有customer_id的assoc,如下所示。我的目标是创建一个具有通用customer_id的assoc数组,用于获取所有客户itmes。

array:2 [▼
// if common customer id, make an item array for the customer
53453=> array:2 [▼
0 => array:3 [▼
"quantity" => "1"
"name" => "Item1"
"price" => 0
],
1 => array:3 [▼
"quantity" => "1"
"name" => "Item3"
"price" => 0
]
]
78640 => array:1 [▼
0 => array:3 [▼
"quantity" => "1"
"name" => "Item2"
"price" => 0
]
]

]

您可以使用相同的键和不需要键的旧数组按customer_id进行分组。

$array = [
["item_id" => "1", "customer_id" => "53453", "name" => "Item3", "price" => 0, "quantity" => 1],
["item_id" => "3", "customer_id" => "53453", "name" => "Item1", "price" => 0, "quantity" => 1],
["item_id" => "2", "customer_id" => "765656", "name" => "Item2", "price" => 0, "quantity" => 1],
];
$finalArray = [];
foreach ($array as $item)
{
$customer_id = $item['customer_id'];
unset($item['customer_id']);
unset($item['item_id']);

$finalArray[$customer_id][] = $item;
}
print_r($finalArray);

输出:

Array
(
[53453] => Array
(
[0] => Array
(
[name] => Item3
[price] => 0
[quantity] => 1
)
[1] => Array
(
[name] => Item1
[price] => 0
[quantity] => 1
)
)
[765656] => Array
(
[0] => Array
(
[name] => Item2
[price] => 0
[quantity] => 1
)
)
)

在线示例

或者,如果你只想创建一些选定的密钥:

$finalArray[$customer_id][] = [
'name'     => $item['name'],
'price'    => $item['price'],
'quantity' => $item['quantity'],
];

在线示例

$newarray=[];
foreach ($firstarray as $fa)
{
$tarray=array($fa['qty'],$fa['name'],$fa['price']);
$newarray[$fa['customer_id']][]=$tarray;
}

你想要的结果或多或少都会在$newarray中。

最新更新