Lösung mi Hilfs-Array + Manöverkritik
bearbeitet von Raketenwilli~~~PHP
<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir brauchen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
echo '----------------------------------------------------' . PHP_EOL;
echo 'Hilfsarray nach dem Einlesen einer (weiteren) Zeile:' . PHP_EOL;
echo '----------------------------------------------------' . PHP_EOL;
print_r( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
~~~
Ausgaben:
~~~
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 100
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 201
[count] => 2
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 102
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 206
[count] => 2
)
)
######################################
01.01.2022 : 101
02.01.2022 : 101
03.01.2022 : 103
~~~
**Ach so: Manöverkritik**
* Die von Dir gezeigten Daten sehen *„schwer subobtimal organisiert“* aus. Mormalerweise würde man einen Timestamp notieren.
* Und falls die Daten in einer Datenbank liegen würde man eine Datenbankfunktion wie `AVG("anzahl")` und ein ``GROUP_BY "date" im SELECT verwenden...
Lösung mi Hilfs-Array
bearbeitet von Raketenwilli~~~PHP
<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir brauchen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
echo '----------------------------------------------------' . PHP_EOL;
echo 'Hilfsarray nach dem Einlesen einer (weiteren) Zeile:' . PHP_EOL;
echo '----------------------------------------------------' . PHP_EOL;
print_r( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
~~~
Ausgaben:
~~~
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 100
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 201
[count] => 2
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 102
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 206
[count] => 2
)
)
######################################
01.01.2022 : 101
02.01.2022 : 101
03.01.2022 : 103
~~~
**Ach so: Manöverkritik**
* Die von Dir gezeigten Daten sehen *„schwer subobtimal organisiert“* aus. Mormalerweise würde man einen Timestamp notieren.
* Und falls die Daten in einer Datenbank liegen würde man eine Datenbankfunktion wie `AVG("anzahl")` und ein ``GROUP_BY "date" im SELECT verwenden...
Lösung mi Hilfs-Array
bearbeitet von Raketenwilli~~~PHP
<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir braucen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
echo '----------------------------------------------------' . PHP_EOL;
echo 'Hilfsarray nach dem Einlesen einer (weiteren) Zeile:' . PHP_EOL;
echo '----------------------------------------------------' . PHP_EOL;
print_r( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
~~~
Ausgaben:
~~~
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 100
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 201
[count] => 2
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 102
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 206
[count] => 2
)
)
######################################
01.01.2022 : 101
02.01.2022 : 101
03.01.2022 : 103
~~~
**Ach so.**
* Die Daten sehen subobtimal aus. Mormalerweise würde man einen Timestamp notieren.
* Und falls die Daten in einer Datenbank liegen würde man eine Datenbankfunktion wie `AVG("anzahl")` und ein ``GROUP_BY "date" im SELECT verwenden...
Lösung mi Hilfs-Array
bearbeitet von Raketenwilli~~~PHP
<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir braucen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
echo '----------------------------------------------------' . PHP_EOL;
echo 'Hilfsarray nach dem Einlesen einer (weiteren) Zeile:' . PHP_EOL;
echo '----------------------------------------------------' . PHP_EOL;
print_r( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
~~~
Ausgaben:
~~~
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 100
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 201
[count] => 2
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 102
[count] => 1
)
)
----------------------------------------------------
Hilfsarray nach dem Einlesen einer (weiteren) Zeile:
----------------------------------------------------
Array
(
[01.01.2022] => Array
(
[sum] => 303
[count] => 3
)
[02.01.2022] => Array
(
[sum] => 101
[count] => 1
)
[03.01.2022] => Array
(
[sum] => 206
[count] => 2
)
)
######################################
01.01.2022 : 101
02.01.2022 : 101
03.01.2022 : 103
~~~
Lösung mi Hilfs-Array
bearbeitet von Raketenwilli~~~PHP
<?php
header('Content-Type: text/plain');
$arr = [
[ '01.01.2022', '08:00', 100 ], # a.k.a. „Zeile“
[ '01.01.2022', '12:00', 101 ],
[ '01.01.2022', '16:00', 102 ],
[ '02.01.2022', '12:00', 101 ],
[ '03.01.2022', '08:00', 102 ],
[ '03.01.2022', '16:00', 104 ]
];
# Ok. Wir braucen einen Hilfsarray:
$helper = [];
# Zeile für Zeile:
foreach ( $arr as $row ) {
# wenn es im Hilfsarray noch keine Zeile für das Datum gibt:
if ( empty( $helper[ $row[0] ] ) ) {
# Lege eine solche an und schreibe den Wert aus der 3. Spalte
# in deren Spalte 'sum' und die 1 in die Spalte 'count'
$helper[ $row[0] ]['sum'] = $row[2];
$helper[ $row[0] ]['count'] = 1;
} else {
# Addiere den Wert aus der 3. Spalte zur Spalte 'sum'
# Erhöhe den Counter
$helper[ $row[0] ]['sum'] += $row[2];
$helper[ $row[0] ]['count'] ++;
}
var_dump( $helper);
}
# Fertíg? Ausgabe!
echo '######################################' . PHP_EOL;
foreach ( array_keys( $helper ) as $itemKey ) {
echo "$itemKey : ", $helper[$itemKey]['sum'] / $helper[$itemKey]['count'], PHP_EOL;
}
~~~