PHP与MySQL程序设计 学习笔记 第四章 函数
拼接函数结果:
echo "Five raised to the third power equals " . pow(5, 3) . ".";
定义函数:
function functionName(parameters) {
function-body
}
参数数量无限制。
按值传递参数,在函数范围内对这些值的改变会在函数外被忽略:
function f($p, $t) {
$p *= (1 + $t);
}
$p = 1;
$t = .075;
f($p, $t); // 调用结束后$p值不变
按引用传递参数:
function f(&$p, &$t) {
$p *= (1 + $t);
}
$p = 1;
$t = .075;
f($p, $t); // 调用结束后$p值变了
指定默认参数:
<?php
function f($p, &$t = 0.2) {
$p *= (1 + $t);
echo $p; // 输出1.2,这点与C++不同,C++中只有const引用才能赋值为右值
}
$p = 1;
f($p); // $p值不变
默认参数值必须位于参数列表末尾且为常数表达式。
php 5引入了类型提示,它可强制参数为某个类的对象或数组,但还不支持标量数据类型。如果提供的参数不是所需类型,会出现一个致命错误:
class c { }
function a(c $cObj) { }
return如果在全局作用域内调用,将终止脚本的执行。
可使用语言结构list返回多个值:
$colors = array("red", "blue", "green", 1, "yellow");
list($red, $blue, $green, $num) = $colors;
以上代码list将数组前四个值返回并赋值。
使用递归计算偿还贷款时每次支付的本金和利息:
function amorizationTable($pNum, $periodicPayment, $balance, $monthlyInterest) {
$paymentInterest = round($balance * $monthlyInterest, 2); // 计算每月需要支付的利息
$paymentPrincipal = round($periodicPayment - $paymentInterest, 2); // 计算每月还了多少本金,用每月还的钱数减去每月的利息
$newBalance = round($balance - $paymentPrincipal, 2); // 本金还剩多少要还
if ($newBalance < $paymentPrincipal) { // 如果本金还完了
$newBalance = 0;
}
if ($newBalance > 0) {
++$pNum;
amorizationTable($pNum, $periodicPayment, $newBalance, $monthlyInterest);
} else {
return 0;
}
}
可将一些重用率高的函数写到一个脚本中,之后使用到这些函数时,将该脚本使用包含语句包含到其他脚本中。
php函数不支持重载:
function a() {}
function a($b) {} // 报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)