首页 > 解决方案 > 如何使用 PHP 函数返回值的数量

问题描述

我正在为我的代码使用 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, '.', '');
    } 
}
?>

标签: phpfunction

解决方案


而不是像$nr你这样有单独的值,最好有一个数组 - 比如$value然后$value['nr']用于每个项目。然后你可以使用

return $value;

它将所有值作为关联数组返回。

您需要先创建数组(为每个选项创建一个元素,而不是使用...我在此示例代码中放入的元素)...

$value = ['nr' => 0.0, ...];

然后使用

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

推荐阅读