Rumah >pangkalan data >tutorial mysql >Bagaimana Menjumlahkan Nilai dengan Cekap dalam Lajur Khusus Tatasusunan Berbilang Dimensi?

Bagaimana Menjumlahkan Nilai dengan Cekap dalam Lajur Khusus Tatasusunan Berbilang Dimensi?

Linda Hamilton
Linda Hamiltonasal
2024-12-15 13:50:54145semak imbas

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

Nilai Jumlah dalam Lajur Tatasusunan Berbilang Dimensi

Tatasusunan berbilang dimensi memberikan cabaran apabila ia datang untuk menjumlahkan lajur tertentu. Pertimbangkan tatasusunan contoh yang diberikan:

$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]
];

Output yang dikehendaki ialah 7, iaitu jumlah lajur f_count.

Penyelesaian Tanpa Gelung Foreach

PHP 5.5 dan lebih baru menyediakan dua fungsi yang memudahkan ini tugasan:

  • array_column: Mengekstrak lajur tertentu daripada tatasusunan.
  • array_sum: Menjumlahkan nilai dalam tatasusunan.

Menggunakan fungsi ini, kita boleh mendapatkan jumlah tanpa foreach gelung:

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

Pendekatan Alternatif: Menstruktur Semula Pertanyaan

Daripada mendapatkan semula tatasusunan berbilang dimensi, kami boleh menstruktur semula pertanyaan untuk mengembalikan tatasusunan satu dimensi:

$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'];

Atas ialah kandungan terperinci Bagaimana Menjumlahkan Nilai dengan Cekap dalam Lajur Khusus Tatasusunan Berbilang Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn