如何使用PHP函数返回值的数目

如何使用PHP函数返回值的数目,php,function,Php,Function,我在代码中使用了一个PHP函数,我希望在调用该函数时返回值。例如,我想返回NR SR HVDC ATT的值,如下所示: if (isset($_POST['action']) AND ! empty($_POST['action']) AND ( $_POST['action'] == 'allUnitMonthWiseDOne')) { $fromdate = date("Y-m-d", strtotime($_POST['fromdate'])); $todate = da

我在代码中使用了一个PHP函数,我希望在调用该函数时返回值。例如,我想返回NR SR HVDC ATT的值,如下所示:

if (isset($_POST['action']) AND ! empty($_POST['action']) AND ( $_POST['action'] == 'allUnitMonthWiseDOne')) {

    $fromdate = date("Y-m-d", strtotime($_POST['fromdate']));
    $todate = date("Y-m-d", strtotime($_POST['todate']));
    $year = date('Y', strtotime($fromdate));
    $y = date("Y-m-d", strtotime($fromdate));
    $fromMon = date('m', strtotime($fromdate));
    $toMon = date('m', strtotime($todate));
    $toChoice = $_POST['toChoice'];
    ?>         

    <table border="1" style="border-collapse: collapse; font-family: verdana,arial,sans-serif;font-size:10px;" width="100%" >
        <tr style="font-weight: 600;">
            <td><?php
    $divQuery = mysqli_query($dbcon, "SELECT * FROM vefm_comp_division WHERE id=" . $_POST['division']);
    $divRow = mysqli_fetch_array($divQuery);
    echo $divRow['division_name'] . ' - ' . date("F Y", strtotime($_POST['fromdate'])) . ' to ' . date("F Y", strtotime($_POST['todate']));
    ?>
            </td>
            <td colspan="13" style="text-align: center;">PL Estimate for the FY <?= $year ?>-<?= $year + 1; ?></td>
        </tr>

        <tr style="font-weight: 600;">
            <?php if ($_POST['division'] == 1) { ?>
                <td><?= $year ?>-<?= $year + 1; ?> PL Estimate</td>
                <td>NR</td>
                <td>SR</td>
                <td>HVDC</td>
                <td>ATT</td>
                <td>WINS</td>
                <td>ONG</td>
                <td>ERECTION</td>
                <td>ER</td>
                <td>TSD</td>
                <td>CR</td>
                <td>WR</td>
                <td>GHY</td>
                <td>YTD <?= substr($y, 2, 3) . '-' . substr(($y + 1), 2, 3); ?></td>
            <?php } ?>
        </tr>

        <tr>
            <td>Monthly Budget</td>
            <?php
            $monthlyResult = 0;
            if ($_POST['division'] == 1) {
                $plQuery = mysqli_query($dbcon, "SELECT id FROM vefm_unit_reference where division_id=1");
            }
            while ($plResult = mysqli_fetch_array($plQuery)) {
                echo '<td>';
                echo number_format($monthlyAmt[$plResult['id']] = monthlyBudget($year, $y, $fromdate, $todate, $plResult['id'], $toChoice, $loggeduser, $dbcon), 2, '.', ',');
                echo '</td>';
            }
            echo '<td>';
            foreach ($monthlyAmt as &$value) {
                $monthlyResult += $value;
            }
            echo number_format($monthlyResult, 2, '.', ',');
            echo '</td>';
            ?>  
        </tr>
    </table>

    <?php
}

function monthlyBudget($year, $y, $fromdate, $todate, $unit, $toChoice, $loggeduser, $dbcon) {

    $fromyear = date('Y', strtotime($fromdate));
    $toyear = date('Y', strtotime($todate));
    $fromMon = date('m', strtotime($fromdate));
    $toMon = date('m', strtotime($todate));
    $nr = 0;
    $sr = 0;
    $hvdc = 0;
    $att = 0;
    $wins = 0;
    $ong = 0;
    $erec = 0;
    $er = 0;
    $tsd = 0;
    $cr = 0;
    $wr = 0;
    $guw = 0;
    $overallTot = 0;

    if ($fromyear == $toyear) {
        for ($p = $fromMon; $p <= $toMon; $p++) {
            if ($p == 1) {
                $mon = 1;
            } elseif ($p == 2) {
                $mon = 2;
            } elseif ($p == 3) {
                $mon = 3;
            } elseif ($p == 4) {
                $mon = 4;
            } elseif ($p == 5) {
                $mon = 5;
            } elseif ($p == 6) {
                $mon = 6;
            } elseif ($p == 7) {
                $mon = 7;
            } elseif ($p == 8) {
                $mon = 8;
            } elseif ($p == 9) {
                $mon = 9;
            } elseif ($p == 10) {
                $mon = 10;
            } elseif ($p == 11) {
                $mon = 11;
            } elseif ($p == 12) {
                $mon = 12;
            }
            $y = $fromyear;

            $fromdate = date('Y-m-01', mktime(0, 0, 0, date($mon), 1, date($y))).'<br>';
            $todate = date('Y-m-t', mktime(0, 0, 0, date($mon) + 1, 0, date($y))).'<br>';

            if ($mon > 3 && $mon < 10) {

                $plQuery = mysqli_query($dbcon, "SELECT ecode_id,unit FROM vefm_dailybudget WHERE division=" . $_POST['division'] . " AND budget_type='monthly' AND (approval_date BETWEEN '" . $fromdate . "' AND '" . $todate . "') AND common_status IN('Finance - II Approved','Cash Disbursement') AND approval_amount != 0 GROUP BY ecode_id");

                while ($plResult = mysqli_fetch_array($plQuery)) {
                    $Monquery1 = mysqli_query($dbcon, "SELECT eligible_2018 FROM vefm_engineer_details WHERE ecode='" . $plResult['ecode_id'] . "'");
                    $amt = mysqli_fetch_array($Monquery1);
                    if ($plResult['unit'] == 1) {
                        $nr += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 2) {
                        $sr += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 4) {
                        $hvdc += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 5) {
                        $att += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 6) {
                        $wins += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 8) {
                        $ong += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 14) {
                        $erec += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 16) {
                        $er += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 17) {
                        $tsd += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 18) {
                        $cr += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 19) {
                        $wr += $amt['eligible_2018'];
                    } else if ($plResult['unit'] == 20) {
                        $guw += $amt['eligible_2018'];
                    }
                }
            } else if ($mon > 9 || $mon < 2) {

                $plQuery = mysqli_query($dbcon, "SELECT unit,approval_amount FROM vefm_dailybudget WHERE division='" . $_POST['division'] . "' AND budget_type='monthly' AND (approval_date BETWEEN '" . $fromdate . "' AND '" . $todate . "') AND common_status IN('Finance - II Approved','Cash Disbursement')");
                while ($plResult = mysqli_fetch_array($plQuery)) {
                    if ($plResult['unit'] == 1) {
                        $nr += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 2) {
                        $sr += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 4) {
                        $hvdc += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 5) {
                        $att += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 6) {
                        $wins += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 8) {
                        $ong += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 14) {
                        $erec += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 16) {
                        $er += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 17) {
                        $tsd += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 18) {
                        $cr += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 19) {
                        $wr += $plResult['approval_amount'];
                    } else if ($plResult['unit'] == 20) {
                        $guw += $plResult['approval_amount'];
                    }
                }
            } else if ($mon > 1 && $mon < 4) {

                $plQuery = mysqli_query($dbcon, "SELECT DISTINCT(ecode_id),MAX(eligible_allowance)AS monthlyBudgetAmt,unit FROM vefm_dailybudget WHERE division='" . $_POST['division'] . "' AND common_status IN('Finance - II Approved','Cash Disbursement') AND eligible_allowance != 0 AND (approval_date BETWEEN '" . $fromdate . "' AND '" . $todate . "') AND budget_type='monthly' GROUP BY ecode_id ORDER BY ecode_id");

                while ($plResult = mysqli_fetch_array($plQuery)) {
                    if ($plResult['unit'] == 1) {
                        $nr += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 2) {
                        $sr += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 4) {
                        $hvdc += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 5) {
                        $att += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 6) {
                        $wins += $amt['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 8) {
                        $ong += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 14) {
                        $erec += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 16) {
                        $er += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 17) {
                        $tsd += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 18) {
                        $cr += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 19) {
                        $wr += $plResult['monthlyBudgetAmt'];
                    } else if ($plResult['unit'] == 20) {
                        $guw += $plResult['monthlyBudgetAmt'];
                    }
                }
            }
        }
        //$overallTot = $nr + $sr + $hvdc + $att + $wins + $ong + $erec + $er + $tsd + $cr + $wr + $guw;
        return $monthlyBudgetAmt = number_format($nr, 2, '.', '');
        //return $monthlyBudgetAmt = number_format($sr, 2, '.', '');
        //return $monthlyBudgetAmt = number_format($hvdc, 2, '.', '');
    } 
}
?>
if(设置($\u POST['action'])和!空($\u POST['action'])和($\u POST['action']=='allUnitMonthWiseDOne')){
$fromdate=日期(“Y-m-d”,标准时间($_POST['fromdate']);
$todate=日期(“Y-m-d”,标准时间($_POST['todate']);
$year=date('Y',strottime($fromdate));
$y=日期(“y-m-d”,标准时间($fromdate));
$fromMon=日期('m',STROTTIME($fromdate));
$toMon=日期('m',标准时间($todate));
$toChoice=$_POST['toChoice'];
?>         
财政年度损益估计-
-损益估计
天然橡胶
SR
高压直流输电
ATT
获胜
翁
直立
急诊室
TSD
铬
西铁
GHY
年初至今
月预算

您最好使用一个数组,比如
$value
,然后对每个项目使用
$value['nr']
,而不是像
$nr
这样单独的值

return $value;
它将以关联数组的形式返回所有值

首先需要创建数组(为每个选项创建一个元素,不要使用我在示例代码中输入的

然后使用

$value['nr'] += $plResult['monthlyBudgetAmt'];

您的代码中有大量重复,您应该研究如何减少重复,这也将有助于使代码更加清晰。这(IMHO)是目前的一个主要问题。我需要返回值得尊敬的单位(如NR、SR、HVDC、CR、WR等)的值。因此,如果您的任何问题得到解决,您可以将其标记为已回答吗-
$value['nr'] += $plResult['monthlyBudgetAmt'];