Autor Zpráva
Adam1999
Profil
Zdravím,
Mám array je stylu:
$arr = array();
$arr[1]= array("datum"=>"25.1.2016", "hodnota"=>"10");
$arr[2]= array("datum"=>"27.1.2016", "hodnota"=>"7");
$arr[3]= array("datum"=>"25.1.2016", "hodnota"=>"16");
$arr[4]= array("datum"=>"20.3.2016", "hodnota"=>"10");
Potřeboval bych pokud je datum stejné aby se hodnota zprůměrovala a vypsalo to array kde budou všechny datumy jen jednou a hodnota datumů u kterých je více hodnot byla zprůměrována. To znamená aby z toho vyšlo toto:
$arr1 = array();
$arr1[1]= array("datum"=>"25.1.2016", "hodnota"=>"13");
$arr1[2]= array("datum"=>"27.1.2016", "hodnota"=>"7");
$arr1[3]= array("datum"=>"20.3.2016", "hodnota"=>"10");
Jak toto udělat? Díky.
Joker
Profil
Adam1999:
Asi bych z toho v prvním kroku vyrobil pole datum => (pole hodnot)
tj. příklad:
["25.1.2016" => [10, 16], "27.1.2016" => [7], "20.3.2016" => [10]]

a ve druhém kroku zprůměroval vnitřní pole.
Adam1999
Profil
No ale jak? Nějaký příklad kodu?
xxar3s
Profil
$avgs = array();
foreach ($arr as $i) $avgs[$i["datum"]][] = $i["hodnota"];
foreach ($avgs as &$i) $i = (array_sum($i) / count($i));

var_dump($avgs);
Adam1999
Profil
xxar3s:
Díky sice funguje ale nechápu jak a potřebuju aby byl výsledný array tak jsem psal v příspěvku. Upravil by jsem si to ale nevím jak ten kod funguje nešlo to by napsat nějak jednodušeji nebo vysvtelit jak to vlastně funguje? Díky.
Joker
Profil
Ten kód je implementace algoritmu, který jsem popsal v [#2], čili tam je popsáno, jak to funguje.

Kdyžtak co konkrétně není jasné?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0