我正在为代码使用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, '.', '');
}
}
?>
答案 0 :(得分:1)
与其拥有诸如$nr
之类的单独值,不如拥有一个数组-诸如$value
之类,然后为每个项目使用$value['nr']
更好。然后,您可以使用
return $value;
这将以关联数组的形式返回所有值。
您需要创建一个数组开头(为每个选项创建一个元素,而不要使用我在此示例代码中输入的...
)...
$value = ['nr' => 0.0, ...];
然后使用
$value['nr'] += $plResult['monthlyBudgetAmt'];