Heim >Datenbank >MySQL-Tutorial >Wie summiert man Werte in einer bestimmten Spalte eines mehrdimensionalen Arrays effizient?

Wie summiert man Werte in einer bestimmten Spalte eines mehrdimensionalen Arrays effizient?

Linda Hamilton
Linda HamiltonOriginal
2024-12-15 13:50:54144Durchsuche

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

Summenwerte in einer mehrdimensionalen Array-Spalte

Mehrdimensionale Arrays stellen eine Herausforderung dar, wenn es um die Summierung bestimmter Spalten geht. Betrachten Sie das angegebene Beispielarray:

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

Die gewünschte Ausgabe ist 7, was der Summe der f_count-Spalte entspricht.

Lösung ohne Foreach-Schleife

PHP 5.5 und höher bietet zwei Funktionen, die dies vereinfachen Aufgabe:

  • array_column: Extrahiert eine bestimmte Spalte aus einem Array.
  • array_sum: Summiert die Werte in einem Array.

Mit diesen Funktionen können wir die Summe ohne foreach ermitteln Schleife:

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

Alternativer Ansatz: Umstrukturierung der Abfrage

Anstatt ein mehrdimensionales Array abzurufen, können wir die Abfrage umstrukturieren, um ein eindimensionales Array zurückzugeben:

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

Das obige ist der detaillierte Inhalt vonWie summiert man Werte in einer bestimmten Spalte eines mehrdimensionalen Arrays effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn