【四】php 函数
一:函数
- 不能和已有的函数重名
- 只能包含字母、数字和下划线
- 不能以数字开头
- 局部变量(函数作用域):函数内部声明的变量在函数外不可用
- 全局变量(全局作用域):函数外部声明的变量在函数内不可用
function func(){
global $var;
$var="hello";
}
func();
echo $var; //输出hello
return:将终止函数的执行
二:自定义函数
基本概念:为完成某一功能的程序指令的集合,成为函数
语法结构:
function 函数名(参数列表){
//函数体(完成某一功能的指令集合,必须有);
//return 语句;(return语句主要的用处是返回一个结果)
}
特点:
- 函数的参数列表可以是多个
- 参数的数据类型可以是php语言支持的任意类型
- 函数的开头的字幕不要用数字或者特殊字符开头
- 函数名不区分大小写,变量区分大小写
- 函数内的变量是局部的
入门案例:使用函数写一个+-*/的计算器
function.php
<?php
//1.function是个关键字
//2.jisuan是函数名
//$num1,$num2,$oper是函数的参数
function jisuan($num1,$num2,$oper){
$res=0;
switch ($oper) {
case '+':
$res=$num1+$num2;
break;
case '-':
$res=$num1-$num2;
break;
case '*':
$res=$num1*$num2;
break;
case '/':
$res=$num1/$num2;
break;
default:
echo "youwu";
break;
}
return $res;
}
?>
function1.php
<?php
//引入你需要的php文件
require 'function.php';
$num1=22;
$num2=11;
$oper="-";
$res=jisuan($num1,$num2,$oper);
echo "jisuanjieguo=".$res;
?>
三:引入其他页面的函数
一共有四种方式:
- require
- requice_once
- include
- include_once
require和require_once的区别为:前者包含文件,后者会判断是否已经包含过了,如果包含过了则不包含文件
require和include 的区别:
- 相同点就是都可以引入页面
- 不同点是include如果出现错误可以继续执行下面的代码,则require出现错误会终止程序
1.require是一个函数,include是一个关键字
2.require是无返回值,include有返回值
3.include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行
在开发过程中,基本使用用require_once
<?php
//使用别的php文件中定义的函数
//第一种方式
//require 'aa.php';
//2.通过变量方式引入
// $filename="aa.php";
// require $filename;
// 3.
//require("aa.php");
//include "aa.php";
include_once "aa.php";
include_once "aa.php";
abc();
echo "qqq";
?>
注意:只要一调用函数,则php就会开辟一个新栈。各个栈里面的变量是相互独立的
function abc($n){
if ($n>2) {
abc(--$n);
}
echo '$n='.$n."<br/>";
}
abc(4);
打印结果:
$n=2
$n=2
$n=3

四:递归函数
/**
* 第一步,执行test("hello"),然后因为5>0,执行test("ello")(注意:后面还有没来得及执行的echo h)
* 第二步,执行test("ello"),然后因为4>0,执行test("llo")(注意:同样后面还有没来得及执行的 echo e)
* 第三步,执行test("llo"),然后因为3>0,执行test("lo")(注意:同样后面还有没来得及执行的 echo l)
* 第四步,执行test("lo"),然后因为2>0,执行test("o")(注意:同样后面还有没来得及执行的 echo l)
* 第五步,执行test("o"),然后因为1>0,执行test("")(注意:同样后面还有没来得及执行的 echo o)
* 第六步,执行test (""),此时0>0的条件不满足,不在执行test()函数
* 而是echo “<-->”,并且执行后面的 echo substr($str,0,1);此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行,也就是开始执行刚刚所有test()函数没来得及输出的最后一个echo。
* o的一层是l,也就是输出l,l的上一层是l, l的上一层是e,e的上一层是h,也就是输出h,h没有上一层所以呢输出的内容就是hello<-->olleh
*/
function test($str){
if (strlen($str)>0){
test(substr($str,1));
}
echo substr($str,0,1);
return ;
}
test("hello"); //olleh
【四】php 函数的更多相关文章
- Javascript模式(第四章函数)------读书笔记
一 背景 js函数的两个特点:1 函数是第一类对象(first-class object):2 函数可以提供作用域 1 函数是对象: 1 函数可以在运行时动态创建,还可以在程序执行过程中创建 2 可以 ...
- VB读写INI文件的四个函数以及相关API详细说明
WritePrivateProfileString函数说明 来源:http://blog.csdn.net/wjb9921/article/details/2005000 在我们写的程序当中,总有一 ...
- php中strstr、strrchr、substr、stristr四个函数的区别总结
php中strstr.strrchr.substr.stristr四个函数的区别总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-09-22我要评论 这篇文章主要介绍了php ...
- php中strstr、strrchr、substr、stristr四个函数用法区别
php中strstr.strrchr.substr.stristr四个函数用法区别: php中strstr strrchr substr stristr这四个字符串操作函数特别让人容易混淆,常用的是s ...
- python-笔记(四)函数
一.函数是什么? 函数一次来源于数学,但是编程中的[函数]的概念,与数学中的函数还是有很大的不同的,编程中的函数在英文中也有很多不同的叫法. 在Basic中叫做subroutine(子过程或子程序), ...
- Python基础知识总结笔记(四)函数
Python基础知识总结笔记(四)函数python中的函数函数中的参数变量作用域偏函数PFA递归函数高阶函数BIFs中的高阶函数匿名函数lambda闭包Closure装饰器Decorator函数式编程 ...
- 第四章 函数(JavaScript:语言精粹)
函数包含一组语句,用来指定对象的行为,其代码可以用来重复使用. 一般来说,编程就是将一组需求分解成一组函数和数据结构的技能. 概览:函数对象 | 函数字面量 | 调用 | 方法调用模式 | 函 ...
- py3.0第四天 函数
列表生成 # -*- coding: utf-8 -*- # data =[1,2,3] # for index,i in enumerate(data): # print (index,i) # d ...
- python自动化开发-[第四天]-函数
今日概要: - 函数对象 - 函数嵌套 - 命名空间和作用域 - 闭包 - 装饰器 - 迭代器 - 生成器 - 内置函数 一.函数对象 1.函数对象的定义: 函数是第一类对象,即函数可以当作数据传递 ...
- python学习笔记(四)— 函数
一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...
随机推荐
- python smtplib 发送邮件简单介绍
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式python的smtplib提供了一种很 ...
- [转载]C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
原文出处:https://www.cnblogs.com/wuhuisheng/archive/2011/03/23/1992652.html 验证电话号码的主要代码如下: public bool I ...
- \r\n回车换行\r回车\n换行的区别
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候 ...
- 统计py文件中的代码行
希望是输入一个合法的文件夹的路径,然后代码自动读取该文件夹下的每个py结尾的文件内的代码行数,最后汇总一个数,但现在只是有思路,却没时间写,这是能读取同级文件下的某个文件, with open('te ...
- Java类型信息
一.引言 最近在阅读<Java编程思想>,学习一下java类型信息,现在做一下总结.Java如何让我们在运行时识别对象和类的信息的.主要有两种方式:一种是传统的“RTTI”,它假定我们在编 ...
- phpstorm 配置点右上角浏览器图标时用浏览器打开当前页面
文件>设置 只要这一步就可以这样了
- 如何将QT的pro图标修改的更显著一些
如何将QT的pro图标修改的更显著一些 QT的项目打开文件是pro,默认是这样的 这个白色的背景在很多文件中很不好找 所以使用工具进行相关修改. 寻找到.pro 双击修改ico 默认的这个就非常不错. ...
- Lottie的json动画
我们的设计如是说: Lottie的json动画,优缺点有 优点: 1.开发成本低,动画的还原度高.设计师导出 json 文件后,交付开发.原本要1天甚至更久的动画实现,现在只要不到一小时甚至更少时间了 ...
- 怎么删除git本地分支以及Bitbucket的远程分支?
1. 如果分支只是本地分支,则可以使用 -d (如果分支已合并),例如 git branch -d <branch name>如果分支包含不计划合并的代码,请改用 -D (即使有没有mer ...
- 浅谈Log4j2日志框架及使用
目录 1.日志框架 2.为什么需要日志接口,直接使用具体的实现不就行了吗? 3.log4j2日志级别 4.log4j2配置文件的优先级 5.对于log4j2配置文件的理解 6.对于Appender的理 ...