第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對 php 數(shù)組進(jìn)行分組的最佳方法是什么?

對 php 數(shù)組進(jìn)行分組的最佳方法是什么?

PHP
烙印99 2023-10-15 16:44:23
例如,我有這個數(shù)組:$bills = array(                 array("bill_id"=>"1", "product_id"=>"1", "total"=>"10"),                 array("bill_id"=>"2", "product_id"=>"2", "total"=>"20"),                 array("bill_id"=>"3", "product_id"=>"1", "total"=>"30"),                 array("bill_id"=>"4", "product_id"=>"1", "total"=>"40"),                 array("bill_id"=>"5", "product_id"=>"2", "total"=>"50")            );我們需要將每個產(chǎn)品的總計(jì)添加到一個數(shù)組中,即從上面的數(shù)組生成以下數(shù)組的最佳干凈快速方法是什么: $products = array(                array("product_id"=>"1", "total"=>"80"),                array("product_id"=>"2", "total"=>"70")            );
查看完整描述

2 回答

?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊

求和的最快方法是索引數(shù)組,像這樣


$products = array();


foreach ($bills as $bill) {

    $key = $bill['product_id'];

    if (isset($products[$key])) {

        $products[$key]['total'] += $bill['total'];

    } else {

        $products[$key] = $bill;

    }

}


var_dump($products);

輸出


array(2) {

  [1]=>

  array(3) {

    ["bill_id"]=>

    string(1) "1"

    ["product_id"]=>

    string(1) "1"

    ["total"]=>

    int(80)

  }

  [2]=>

  array(3) {

    ["bill_id"]=>

    string(1) "2"

    ["product_id"]=>

    string(1) "2"

    ["total"]=>

    int(70)

  }

}

瀏覽發(fā)票清單


foreach($products as $key=>$bill) {

    var_dump($bill);

}


查看完整回答
反對 回復(fù) 2023-10-15
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個贊

最簡單的方法是單遍循環(huán)。


$byProduct = [];


foreach($bills as $bill)

{

    $key = $bill['product_id'];

    if (!isset($byProduct[$key])) {

        $byProduct[$key] = [

            'product_id' => $key,

            'total' => 0

        ];

    }


    $byProduct[$key]['total'] += $bill['total'];

}

結(jié)果var_dump($byProduct):


array(2) {

  [1] =>

  array(2) {

    'product_id' =>

    string(1) "1"

    'total' =>

    int(80)

  }

  [2] =>

  array(2) {

    'product_id' =>

    string(1) "2"

    'total' =>

    int(70)

  }

}

另一種方法是使用array_walk,但在復(fù)雜性方面幾乎相同:


$byProduct = [];


array_walk($bills, function(&$bill) use (&$byProduct) {

    $key = $bill['product_id'];

    if (!isset($byProduct[$key])) {

        $byProduct[$key] = [

            'product_id' => $key,

            'total' => 0

        ];

    }


    $byProduct[$key]['total'] += $bill['total'];

});


查看完整回答
反對 回復(fù) 2023-10-15
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號