Пример #1
0
/**
 * Age in year of first marriage
 *
 * @param int   $z_axis
 * @param int[] $z_boundaries
 * @param Stats $stats
 *
 * @return int
 */
function age_at_first_marriage($z_axis, array $z_boundaries, Stats $stats)
{
    $total = 0;
    if ($z_axis === 300) {
        $num = $stats->statsMarrAgeQuery(false, 'M');
        $indi = array();
        foreach ($num as $values) {
            if (!in_array($values['d_gid'], $indi)) {
                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
                $total++;
                $indi[] = $values['d_gid'];
            }
        }
        $num = $stats->statsMarrAgeQuery(false, 'F');
        $indi = array();
        foreach ($num as $values) {
            if (!in_array($values['d_gid'], $indi)) {
                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
                $total++;
                $indi[] = $values['d_gid'];
            }
        }
    } elseif ($z_axis === 301) {
        $num = $stats->statsMarrAgeQuery(false, 'M');
        $indi = array();
        foreach ($num as $values) {
            if (!in_array($values['d_gid'], $indi)) {
                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
                $total++;
                $indi[] = $values['d_gid'];
            }
        }
        $num = $stats->statsMarrAgeQuery(false, 'F');
        $indi = array();
        foreach ($num as $values) {
            if (!in_array($values['d_gid'], $indi)) {
                fill_y_data(1, (int) ($values['age'] / 365.25), 1);
                $total++;
                $indi[] = $values['d_gid'];
            }
        }
    } else {
        $zstart = 0;
        $indi = array();
        foreach ($z_boundaries as $boundary) {
            $num = $stats->statsMarrAgeQuery(false, 'M', $zstart, $boundary);
            foreach ($num as $values) {
                if (!in_array($values['d_gid'], $indi)) {
                    fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
                    $total++;
                    $indi[] = $values['d_gid'];
                }
            }
            $num = $stats->statsMarrAgeQuery(false, 'F', $zstart, $boundary);
            foreach ($num as $values) {
                if (!in_array($values['d_gid'], $indi)) {
                    fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
                    $total++;
                    $indi[] = $values['d_gid'];
                }
            }
            $zstart = $boundary + 1;
        }
    }
    return $total;
}