繁体   English   中英

将数组键和组键更改为相同的值

[英]Change array key and group key with the same value

我有一个数组看起来像这样:

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
    )
)

预期是这样的:

Array (
[2] => array (
       [67] => array (
                  [variant_id] => Green
                  [amount] => 1000
                 (   
       [68] => array (
                  [variant_id] => Red
                  [amount] => 0
                 ( 


)

按product_id分组,然后按Variant_id分组为数组。 我怎样才能做到这一点。 非常感谢。

foreach($values as $product)
{
$newValues[$product["product_id"]][$product["variant_id"]]=
 array(
  'product_name'=>$product["variant_name"],
  'amount'=>$product["amount"]
  );
}

输出量

Array
(
    [2] => Array
        (
            [67] => Array
                (
                    [product_name] => Green
                    [amount] => 1000
                )

            [68] => Array
                (
                    [product_name] => Red
                    [amount] => 0
                )

        )

)

注意您在原始数组中有variant_name ,并将其用作输出中的variant_id 您可以在此代码中使用索引。 我只是用了似乎匹配的东西。

一个简单的foreach循环就足够了。 当然,您需要将它们构建在新数组中。 考虑以下示例:(在您期望的示例中,我认为您是在指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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM