ホームページ >データベース >mysql チュートリアル >多次元配列の特定の列の値を効率的に合計するにはどうすればよいですか?

多次元配列の特定の列の値を効率的に合計するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-15 13:50:54145ブラウズ

How to Efficiently Sum Values in a Specific Column of a Multidimensional Array?

多次元配列の列の値を合計する

多次元配列では、特定の列を合計する際に課題が生じます。次の配列の例を考えてみましょう。

$arr = [
    [0] => ['f_count' => 1, 'uid' => 105],
    [1] => ['f_count' => 0, 'uid' => 106],
    [2] => ['f_count' => 2, 'uid' => 107],
    [3] => ['f_count' => 0, 'uid' => 108],
    [4] => ['f_count' => 1, 'uid' => 109],
    [5] => ['f_count' => 0, 'uid' => 110],
    [6] => ['f_count' => 3, 'uid' => 111]
];

必要な出力は 7 で、これは f_count 列の合計です。

Foreach ループを使用しないソリューション

PHP 5.5 以降では、これを簡素化する 2 つの関数が提供されていますtask:

  • array_column: 配列から特定の列を抽出します。
  • array_sum: 配列内の値を合計します。

これらの関数を使用すると、変数を使用せずに合計を取得できます。 foreach ループ:

$f_count_column = array_column($arr, 'f_count');
$sum = array_sum($f_count_column);

代替アプローチ: クエリの再構築

多次元配列を取得する代わりに、1 次元配列を返すようにクエリを再構築できます。

$query = "SELECT SUM(f_count) AS total_f_count FROM users WHERE gid=:gid";

$stmt = $pdo->prepare($query);
$stmt->execute([':gid' => $gid]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

$total_f_count = $row['total_f_count'];

以上が多次元配列の特定の列の値を効率的に合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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