날짜를 키로, 가격을 값으로 사용하는 배열이 있습니다. 이렇게 :
Array
(
[2016-11-11] => 25.05
[2016-11-12] => 25.05
[2016-11-13] => 25.05
[2016-11-14] => 25.05
...
)
이제 오늘의 평균값을 계산해야합니다-1부터 오늘까지-8입니다. 물론 항목이 8 개 미만이면 올바르게 계산해야합니다.
키를 추출하고 값을 필터링하여 모두 for 루프에 넣을 생각입니다. 하지만 더 나은 방법이있을 것입니다. 나는 어느 방향으로 시작해야할지 아이디어에 대해 적어도 행복합니다. 도와 주 시겠어요?
내가 다음과 같이 정의한 "오늘":
date_default_timezone_set("Europe/Berlin");
$timestamp = time();
$today = date("Y-m-d",$timestamp);
편집 : 출력은 다음과 같아야합니다.
$last_week_mean = "value" of key[today-1] + "value" of key [today-2]
+ ... / count(amount of key values in this range)
하지만이 쿼리 / 필터를 작성하는 방법을 모르겠습니다.
array_filter
with ARRAY_FILTER_USE_KEY
를 사용 하여 원하는 특정 날짜 범위를 얻을 수 있습니다 . 그러나 그 이후에는 평균을 계산하기 위해 루프를 사용할 필요가 없습니다. 필터링 된 배열의 합계 / 개수를 사용할 수 있습니다.
$d1 = date('Y-m-d', strtotime('8 days ago'));
$d2 = date('Y-m-d', strtotime('1 day ago'));
$range = array_filter($your_array, function($date_string) use ($d1, $d2) {
return $date_string >= $d1 && $date_string <= $d2;
}, ARRAY_FILTER_USE_KEY);
$average = array_sum($range) / count($range);
또한 데이터베이스에서 초기 배열을 가져 오는 경우 시작하려는 날짜 만 선택하는 것이 더 쉽고 효율적일 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다