[英]Change array key and group key with the same value
I have an array looks like this: 我有一个数组看起来像这样:
Array
(
[0] => Array
(
[variant_name] => Green
[product_id] => 2
[variant_id] => 67
[amount] => 1000
)
[1] => Array
(
[variant_name] => Red
[product_id] => 2
[variant_id] => 68
[amount] => 0
)
)
This expected to be like this: 预期是这样的:
Array (
[2] => array (
[67] => array (
[variant_id] => Green
[amount] => 1000
(
[68] => array (
[variant_id] => Red
[amount] => 0
(
)
Which is group by product_id and then split into arrays group by variant_id. 按product_id分组,然后按Variant_id分组为数组。 How can I do that.
我怎样才能做到这一点。 Thank you so much.
非常感谢。
foreach($values as $product)
{
$newValues[$product["product_id"]][$product["variant_id"]]=
array(
'product_name'=>$product["variant_name"],
'amount'=>$product["amount"]
);
}
Output 输出量
Array
(
[2] => Array
(
[67] => Array
(
[product_name] => Green
[amount] => 1000
)
[68] => Array
(
[product_name] => Red
[amount] => 0
)
)
)
Note You have variant_name
in your original array and you are using that as variant_id
in your output. 注意您在原始数组中有
variant_name
,并将其用作输出中的variant_id
。 You can play with indexes in this code. 您可以在此代码中使用索引。 I just used what seemed to match.
我只是用了似乎匹配的东西。
A simple foreach loop should suffice. 一个简单的foreach循环就足够了。 Of course, you need to build them inside a new array.
当然,您需要将它们构建在新数组中。 Consider this example: (In your expected example, I think you were referring to
variant_name
) 考虑以下示例:(在您期望的示例中,我认为您是在指
variant_name
)
$values = array( array( 'variant_name' => 'Green', 'product_id' => 2, 'variant_id' => 67, 'amount' => 1000, ), array( 'variant_name' => 'Red', 'product_id' => 2, 'variant_id' => 68, 'amount' => 0, ), );
$new_values = array();
foreach($values as $key => $value) {
$new_values[$value['product_id']][$value['variant_id']] = array(
'variant_name' => $value['variant_name'],
'amount' => $value['amount'],
);
}
echo '<pre>';
print_r($new_values);
echo '</pre>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.