像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的、独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值。

自定义函数

函数的声明

在编写程序的过程中,我们会经常碰到某些功能模块在PHP中没有提供系统函数,这样就需要我们自己定义函数,即自定义函数,自定义函数的规则如下:

  • 每个函数的第一行都是函数头,由声明函数的关键字function、函数名和参数列表三部分组成。
  • 每个自定义函数都必须使用function关键字声明。
  • 函数名可以代表整个函数,可以将函数命名为任何名称,只要遵循变量名的命名规则即可。但函数名称必须唯一,且不能与系统函数重名。
  • 声明函数时函数名后面的花括号也是必须有的,在花括号中表明了一组可以接受的参数列表,参数就是声明的变量,然后在调用函数时传递给它值。参数列表可以没有,也可以有—个或多个参数,多个参数使用逗号分隔。
  • 函数体位于函数头后面,用花括号括起来。函数被调用后,执行到retun语句或最外面的花括号后结束,返回到调用的程序。
  • 使用关键字return可以从函数中返回一个值,然后返回到调用程序处继续执行。

Demo

<?php
/* 将使用双层for循环输出表格的代码声明为函数,函数名为table */
function table() {
echo "<table align='center' border='1' width='600'>";
for($out=0; $out < 10; $out++ ) {
$bgcolor = $out%2 == 0 ? "red" : "blue";//各行换背景色
echo "<tr bgcolor=".$bgcolor.">";
for($in=0; $in <10; $in++) {
echo "<td>".($out*10+$in)."</td>";
}
echo "</tr>";
}
echo "</table>";
}
?>

函数的调用

不管是自定义的函数还是系统函数,如果函数不被调用,就不会执行。函数被调用后开始执行函数体中的代码,执行完毕返回到调用的位置继续向下执行。调用规则如下:

  • 通过函数名称去调用函数。
  • 如果函数有参数列表,还可以通过函数名后面的圆括号传入对应的值给参数,在函数体中使用参数来改变函数内部代码的执行行为。
  • 如果函数有返回值,当函数执行完毕时就会将return后面的值返回到调用函数的位置处。

Demo

<?php
/* 将使用双层for循环输出表格的代码声明为函数,函数名为table */
function table() {
echo "<table align='center' border='1' width='600'>";
for($out=0; $out < 10; $out++ ) {
$bgcolor = $out%2 == 0 ? "red" : "blue";//各行换背景色
echo "<tr bgcolor=".$bgcolor.">";
for($in=0; $in <10; $in++) {
echo "<td>".($out*10+$in)."</td>";
}
echo "</tr>";
}
echo "</table>";
}
?> <?php
table();
?>

函数的参数

参数列表是由零个、一个或多个参数组成的。每个参数是一个表达式,用逗号分隔。对于有参函数,在PHP脚本程序中和被调用函数之间有数据传递关系。定义函数时函数名后面括号内的表达式称为形式参数(简称“形参”),被调用函数名后面括号中的表达式称为实际参数(简称“实参”),实参和形参需要接顺序对应传递数据。如果函数没有参数列表,函数执行的任务就是固定的,用户在调用函数时不能改变函数内部的一些执行行为。

Demo

<?php
/**
自定义函数table()时,声明三个参数,参数之间使用逗号分隔
@param string $tableName 需要一个字符串类型的表名
@param int $rows 需要一个整型数值设置表格的行数
@param int $cols 需要另一个整型值设置表格的列数
*/
function table( $tableName, $rows, $cols ) {
echo "<table align='center' border='1' width='600'>";
echo "<caption><h1> $tableName </h1></caption>"; for($out=0; $out < $rows; $out++ ) { //使用第二个参数$rows指定表行数
$bgcolor = $out%2 == 0 ? "red" : "blue";
echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in < $cols; $in++) { //使用第三个参数$cols指定表列数
echo "<td>".($out*$cols+$in)."</td>";
} echo "</tr>";
}
echo "</table>";
}
?> <?php
table("千度的表格",10,10);
?>

函数的返回值

函数的返回值是函数执行的结果,调用函数的脚本程序不能直接使用函数体里面的信息,但可以通过关键字return向调用者传递数据。return语句注意点如下:

  • return语句可以向函数调用者返回函数体中任意执行结果值。
  • 在函数体中如果执行了return语句,它后面的语句就不会被执行。

Demo

<?php
/**
自定义函数table()时,声明三个参数,参数之间使用逗号分隔
@param string $tableName 需要一个字符串类型的表名
@param int $rows 需要一个整型数值设置表格的行数
@param int $cols 需要另一个整型值设置表格的列数
*/
function table( $tableName, $rows, $cols ) {
$returnStr="这是返回的字符串";
echo "<table align='center' border='1' width='600'>";
echo "<caption><h1> $tableName </h1></caption>"; for($out=0; $out < $rows; $out++ ) { //使用第二个参数$rows指定表行数
$bgcolor = $out%2 == 0 ? "red" : "blue";
echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in < $cols; $in++) { //使用第三个参数$cols指定表列数
echo "<td>".($out*$cols+$in)."</td>";
} echo "</tr>";
}
echo "</table>";
return $returnStr;
}
?> <?php
echo table("千度的表格",10,10);
?>

PHP函数之自定义函数的更多相关文章

  1. MySQL之运算符与函数、自定义函数

    一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 ...

  2. PHP学习之[第05讲]PHP5.4 循环结构、系统函数和自定义函数

    一.while/for/break/continue: while (expr){ statements } for (expr1:expr2:expr3){ statement } break n  ...

  3. Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)

    Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数

  4. PHP基础函数、自定义函数以及数组

    2.10 星期五  我们已经真正开始学习PHP 了,今天的主要内容是php基础函数.自定义函数以及数组, 内容有点碎,但是对于初学者来说比较重要,下面是对今天所讲内容的整理:  1 php的基本语法和 ...

  5. 【C语言】函数和自定义函数

    函数,我之前也提到过一点点内容.其实函数是很好理解的,但是写起来又十分麻烦. 一.     函数引入 我们知道,C源程序是由函数组成的.请看下面的简单函数例子 #include <stdio.h ...

  6. 5.Smart使用内置函数或者自定义函数

    1.使用内置函数 例如使用date函数 {"Y-m-d"|date:$time}格式{第一个参数|方法:第二个参数:第三个参数}即可转换成 2016-07-19  2.使用resi ...

  7. Hive函数以及自定义函数讲解(UDF)

    Hive函数介绍HQL内嵌函数只有195个函数(包括操作符,使用命令show functions查看),基本能够胜任基本的hive开发,但是当有较为复杂的需求的时候,可能需要进行定制的HQL函数开发. ...

  8. python第十四课--排序及自定义函数之自定义函数(案例五)

    演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',ag ...

  9. python第十四课--排序及自定义函数之自定义函数(案例四)

    整理:4中最常见的自定义函数模型1).无参无返回值2).无参有返回值3).有参无返回值4).有参有返回值 #定义无参无返回值自定义函数 def func1(): print('hello method ...

随机推荐

  1. Eos开发——ajax请求

    function saveData(){ form.validate(); if(form.isValid()==false) return; var persons = grid.getChange ...

  2. sql的行转列(PIVOT)与列转行(UNPIVOT)

    在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测 ...

  3. Spring学习记录(六)---使用外部属性文件

    在bean配置资源或系统部署,如数据库的连接时,需要这样: 要包含相关jar包:c3p0.jar 和mysql.connector.jar xml配置: <bean id="dataS ...

  4. API调试工具推荐 - httpie

    API调试工具推荐 - httpie <HelloGitHub>第07期上面看到这个python项目,好东西 文档地址 但是安装的时候报错,google之后发现是个已知的bug,直接使用p ...

  5. Java三大框架 介绍

    三大框架:Struts+hibernate+spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...

  6. Nhibernate 4.0 教程入门

    Nhibernate 4.0 教程 目录 1.      下载Nhibernate 4.04. 1 2.      入门教程... 2 3.      测试项目详解... 3 4.      总结.. ...

  7. 移动web app开发必备 - zepto事件问题

    问题描述: 项目在祖先元素上绑定了 touchstart,touchmove,touchend事件,用来处理全局性的事件,比如滑动翻页 正常状态下: 用户在子元素上有交互动作时,默认状态下都是会冒泡到 ...

  8. 计算程序总行数的Python代码

    最近需要统计一下项目中代码的总行数,写了一个Python小程序,不得不说Python是多么的简洁,如果用Java写至少是现在代码的2倍. import os path="/Users/ron ...

  9. 一张图理解prototype、proto和constructor的三角关系

    × 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 javascript里的关系又多又乱.作用域链是一种单向的链式关系,还算简单清晰:this机制的调用关系,稍微有些复杂:而关于原型,则 ...

  10. 数据可视化-EChart2.0使用总结2

    接上一篇博客,这篇博客主要讨论EChart里面的散点图.气泡图和雷达图.   4.散点图-Scatter Chart 适合场景:三维数据集,但是只有两个维度需要比较.比较的是X轴和Y轴的数据,第三个数 ...