foreach 루프 내에서 MySQL 쿼리를 실행했지만 이제 쿼리를 먼저 실행 한 다음 배열을 반복하는 것이 더 효율적이라는 것을 알게되었습니다. 나는 3 개의 테이블에있는 데이터를 사용하여 Google 그래프를 구성하는 코드를 최적화 할 수 있는지 궁금합니다. 예를 들어 foreach 루프에 where 절을 추가하여 각 루프 내에 if 절을 포함 할 필요가 없습니까?foreach 루프를 사용하여 배열을 통한 반복 최적화
$begin = new DateTime(date('Y-m-d', strtotime('-28 days')));
$end = new DateTime(date('Y-m-d', strtotime('+1 day')));
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
$sessions = $wpdb->get_results($wpdb->prepare("SELECT Due,Date from patient_sessions WHERE Type='Session'"));
$work_times = $wpdb->get_results($wpdb->prepare("SELECT Amount,Date from work_times"));
$expenses = $wpdb->get_results($wpdb->prepare("SELECT Amount,Date from expenses WHERE Client='Psychotherapy'"));
foreach ($period as $dt) {
$session_total = 0;
$work_time_total = 0;
$expense_total = 0;
$date = $dt->format("Y-m-d");
$date_display = $dt->format("D j M");
foreach ($sessions as $session) {
if (substr($session->Date,0,10) === $date) {
$session_total = ($session_total+$session->Due);
}
}
foreach ($work_times as $work_time) {
if ($work_time->Date === $date) {
$work_time_total = ($work_time_total+$work_time->Amount);
}
}
foreach ($expenses as $expense) {
if ($expense->Date === $date) {
$expense_total = ($expense_total+$expense->Amount);
}
}
$balance = ($session_total + $work_time_total - $expense_total);
$temp = array();
$temp[] = array('v' => (string) $date_display);
$temp[] = array('v' => (string) $balance);
$rows[] = array('c' => $temp);
}
나는 당신의 마지막 줄을 이해하지 않는다 :'$ 행 [] = 배열 ('C'를 = > $ temp); ', 당신은 여기서 무엇을하려고합니까? – Revent