簡體   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