検索
ホームページバックエンド開発PHPの問題PHP は 2 次元配列内の列の合計を求めます。

PHP 開発プロセスでは、配列内のデータに対して合計演算を実行する必要があることがよくあります。 1 次元配列の場合、array_sum 関数を使用して直接合計することができますが、配列が 2 次元配列になると、指定された列の合計を求めるために追加の操作が必要になります。

たとえば、販売データを格納する 2 次元配列があり、各サブ配列は製品 ID、販売数量、単価、その他の情報を含む製品の販売データを表します。すべての商品の総収益、つまり販売量と単価の積を求める必要があります。

それでは、この操作をどのように実装するのでしょうか?

まず、array_column 関数を使用して、指定された列の配列を取得します。この関数は PHP5.5 バージョンの新機能で、構文は次のとおりです: array_column ( array $input ,mixed $column_key [,mixed $index_key = null ] )、$input は抽出される列の配列、$column_key は抽出する配列 列のキー名または数値インデックス $index_key はオプションで、返される配列のキーとして使用されるキー名または列の数値インデックスです。

たとえば、上記の売上データの 2 次元配列では、次のコードを使用してすべての製品の売上配列を取得できます。

$sold_amount = array_column($sales_data, 'sold_amount');

次に、array_reduce 関数を使用できます。 $ sold_amount 配列を変更するには、累積操作を実行して総売上高を取得します。構文は次のとおりです。 array_reduce ( array $array , callable $callback [,mixed $initial = null ] )。ここで、 $array は蓄積される配列、 $callback はカスタム コールバック関数、 $initial は初期値です。

たとえば、次のコードを使用して、すべての製品の売上の合計を見つけることができます:

$total_sold_amount = array_reduce($sold_amount, function($carry, $item){
    return $carry + $item;
});

次に、単価配列に対して同じ操作を実行して、単価を取得する必要があります。すべての商品の単価の合計。最後に、2 つの合計を乗算して、すべてのアイテムの合計収益を取得します。

完全なコードは次のとおりです:

$sales_data = array(
    array('id' => 1, 'sold_amount' => 50, 'unit_price' => 2.5),
    array('id' => 2, 'sold_amount' => 20, 'unit_price' => 3.2),
    array('id' => 3, 'sold_amount' => 100, 'unit_price' => 1.8),
);

$sold_amount = array_column($sales_data, 'sold_amount');
$total_sold_amount = array_reduce($sold_amount, function($carry, $item){
    return $carry + $item;
});

$unit_price = array_column($sales_data, 'unit_price');
$total_unit_price = array_reduce($unit_price, function($carry, $item){
    return $carry + $item;
});

$total_revenue = $total_sold_amount * $total_unit_price;

echo '所有商品的总收入为:' . $total_revenue;

上記のコードを実行すると、出力: すべての製品の合計収入: 630。

要約すると、2 次元配列の特定の列に対して合計演算を実行する必要がある場合、array_column 関数を使用して指定された列の配列を取得し、次に array_reduce 関数を使用できます。配列に対して累積演算を実行して列の合計を取得します。これらの方法により、データをより便利に処理し、開発効率を向上させることができます。

以上がPHP は 2 次元配列内の列の合計を求めます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。