как я могу избежать здесь вложенного цикла?используя php - PullRequest
0 голосов
/ 02 июня 2019

У меня есть этот цикл, и я хочу сохранить все эти элементы из каждого года и квартала в моем массиве, чтобы я мог получить средние значения за квартал, но делать это так, как мне кажется, плохо для меня. и я не могу рассчитывать на ожидание этого

то, что я делаю здесь, читает из моего массива jason квартал и год и сохраняет его в каждом элементе моего массива из 12 элементов. но я уверен, что это плохо.

foreach($Jarray as $obj) {
    if ($obj->quarter == "1" and $obj->year == "2015" ) {
        $tarray[0] = $tarray[0] + $obj->sales;

    }
    if ($obj->quarter == "2" and $obj->year == "2015" ) {
        $tarray[1] = $tarray[1] + $obj->sales;
    }
    if ($obj->quarter == "3" and $obj->year == "2015" ) {
        $tarray[2] = $tarray[2] + $obj->sales;

    }
    if ($obj->quarter == "4" and $obj->year == "2015" ) {
        $tarray[3] = $tarray[3] + $obj->sales;

    }
    if ($obj->quarter == "1" and $obj->year == "2016" ) {
        $tarray[4] = $tarray[4] + $obj->sales;

    }
    if ($obj->quarter == "2" and $obj->year == "2016" ) {
        $tarray[5] = $tarray[5] + $obj->sales;

    }
    if ($obj->quarter == "3" and $obj->year == "2016" ) {
        $tarray[6] = $tarray[6] + $obj->sales;

    }
    if ($obj->quarter == "4" and $obj->year == "2016" ) {
        $tarray[7] = $tarray[7] + $obj->sales;

    }
    if ($obj->quarter == "1" and $obj->year == "2017" ) {
        $tarray[8] = $tarray[8] + $obj->sales;

    }
    if ($obj->quarter == "2" and $obj->year == "2017" ) {
        $tarray[9] = $tarray[9] + $obj->sales;

    }
    if ($obj->quarter == "3" and $obj->year == "2017" ) {
        $tarray[10] = $tarray[10] + $obj->sales;

    }
    if ($obj->quarter == "4" and $obj->year == "2017" ) {
        $tarray[11] = $tarray[11] + $obj->sales;

    }
    $count ++;
}

1 Ответ

0 голосов
/ 02 июня 2019

Самый простой способ - вычислить смещение элемента, используя год и квартал для его расчета ...

$offset  = (($obj->year-2015)*4)+$obj->quarter-1;

Таким образом, с 2015 Q 1 - это дает 0, 2017 Q4 дает11. Таким образом, код сводится к ...

$tarray = array_fill(0,12,0);
foreach ( $Jarray as $obj ) {
    $offset  = (($obj->year-2015)*4)+$obj->quarter-1;
    $tarray[$offset] += $obj->sales;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...