`
cyxlgzs
  • 浏览: 90057 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

PHP实践之路(七)PHP函数

阅读更多

PHP实践之路(目录索引)

PHP函数

1、函数名

a、函数名以字母或下划线打头,后面跟字母,数字或下划线(大小写无关)

b、所有函数和类都具有全局作用域,可以在内部定义外部调用,反之亦然。

c、不支持函数重载,也不可能取消定义或者重定义已声明的函数

d、函数的调用必须是先定义后使用

e、任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类定义

接下来实验一下

<?php
	function foo(){
		echo "Hello World<br />";
	}
	
	foo();	//函数的调用,输出Hello World
	
	/*
	此处函数重复定义,因为函数名大小写无关,所以函数foo和函数FOO被认为是同一个函数,编译
	报错:Fatal error: Cannot redeclare FOO() 
	function FOO(){
		echo "do something";
	}
	*/
	
	function outer(){
		echo "outer function executed..<br />";
		
		//函数内部定义函数
		function inner(){
			echo "inner function executed..<br />";
		}
	}
	
	//如果根据函数调用必须是先定义的规则,如果我们直接调用inner()函数将出错
	//inner();		//此处出错:Fatal error: Call to undefined function inner()
	
	//如果我们先调用outer()函数,然后再调用innner()函数就好了,调用outer()后,inner()函数将被认为是已定义
	outer();	//输出 outer function executed..
	inner();	//函数具有全局作用域,内部定义外部也可以使用。输出 inner function executed..
?>


2、函数参数

a、函数参数的传递有三种方式:按值传递、引用传递和默认参数三种

b、任何默认参数必须放在任何非默认参数的右侧

c、可变参数列表,支持不固定参数个数及类型的参数传递方式。可变参数列表方式必须使用func_num_args()func_get_arg() 以及func_get_args()三个函数

针对以上知识点,我们动动手吧

<?php
	//按值传递参数
	function sayHello($name){
		$name="[".$name."]";	//修改$name的值
		echo "Hello ".$name."<br />";
	}
	$name = "jack";
	
	sayHello($name);	//输出Hello [jack]
	
	echo $name;			//$name没有发生变化,输出jack
	echo "<br />";		//换行
	
	//引用传递
	function sayHello2(&$name){
		$name="[".$name."]";	//修改$name的值
		echo "Hello ".$name."<br />";
	}
	
	sayHello2($name);	//输出Hello [jack]
	
	echo $name;			//$name已经发生了变化,输出[jack]
	echo "<br />";		//换行
	//默认参数
	function sayHello3($name = "somebody"){
		$name="[".$name."]";	//修改$name的值
		echo "Hello ".$name."<br />";
	}
	
	sayHello3();		//采用默认参数值,输出Hello [somebody]
	sayHello3("lucy");	//采用传递的参数值,输出Hello [lucy]
	
	//任何默认参数必须放在任何非默认参数的右侧
	/*
	以下函数的定义将导致调用sayMore("How do you do");出错,它默认将传入的参数
	赋值给了$name,而$more的值确遗失了
	function sayMore($name = "somebody",$more){
		$name="[".$name."]";
		echo "Hello ".$name." ".$more."<br />";
	}
	*/
	function sayMore($more,$name = "somebody"){
		$name="[".$name."]";
		echo "Hello ".$name." ".$more."<br />";
	}
	sayMore("How do you do");		//输出Hello [somebody] How do you do
	
	
	//以下测试可变参列表的使用
	function showFamilyMembers(){
		$num = func_num_args();		//通过func_num_args()函数获取参数的数量
		for($i=0;$i<$num;$i++){
			echo func_get_arg($i);		//通过func_get_arg()函数获取具体某个参数的值
			echo " ";
		}
		echo "<br />";		//换行
	}
	showFamilyMembers("jack","lucy");		//输出:jack lucy
	showFamilyMembers("jack","lucy","lily");		//输出:jack lucy lily 
	
	//第二种方式获取参数列表
	function showFamilyMembers2(){
		$members=func_get_args();		//通过func_get_args()函数获取参数列表
		foreach($members as $member){
			echo $member;
			echo " ";
		}
		echo "<br />";		//换行
	}
	showFamilyMembers2("jack","lucy");		//输出:jack lucy
	showFamilyMembers2("jack","lucy","lily");		//输出:jack lucy lily 
?>


3、函数返回值

a、函数只能返回一个值,如果需要返回多个值时可以采用返回数组的方式
b、从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 &
函数的返回值这块相对比较简单,需要了解的内容也比较少,接下来简单测试一下
<?php
function getOneColor(){
	return "red";	//返回一个值
}

function getMoreValue(){
	$arr=array("red","blue","orange");	//返回多个值
	return $arr;
}

echo(getOneColor());	//输出val1
echo "<br />";

var_dump(getMoreValue());
/*输出
array (size=3)
  0 => string 'red' (length=3)
  1 => string 'blue' (length=4)
  2 => string 'orange' (length=6)
*/
echo "<br />";

/********以下测试返回引用***********/
class test {
    public $value = 42;

    public function &getValue() {
        return $this->value;
    }
}

$obj = new test;
$myValue = &$obj->getValue(); 
echo $myValue;                // 输出42
echo "<br />";
$obj->value = 2;
echo $myValue;                // 输出2
?>


4、可变函数

a、变量后面跟上圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它
b、可变函数一般用来实现函数的回调
实验时间
<?php
function sayHello($name = "somebody"){
	echo "Hello ".$name;
}

$func="sayHello";

$func();		//输出Hello somebody
echo "<br />";	//换行
$func("jack");	//输出Hello jack

?>


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    PHP网络编程技术与实践 源码

    第2章 PHP的语法结构和常用函数 2.1 PHP语法基础 2.1.1 PHP的基本语法 2.1.2 PHP的数据类型 2.1.3 PHP的常量 2.1.4 PHP的变量 2.1.5 PHP的表达式 2.1.6 PHP的流程控制 2.2 PHP的数据存储处理 2.2.1 压缩文件的打开与...

    php中mail()函数和SMTP工作原理及实践_.docx

    php中mail()函数和SMTP工作原理及实践_.docx

    PHP7实践指南:O2O网站与APP后台开发

    本书的核心内容包括:PHP基础语法、函数、面向对象编程、PHP类、常见的设计模式、正则表达式、PHP操作图像和文件、MVC架构思想、ThinkPHP框架、NoSQL与MySQL等。另外,还介绍了当前热点的O2O网站开发和App后台开发的...

    php7实践指南配书源代码.

    2015年12月3日,PHP 7.0.0 GA发布,性能较PHP 5.6提升了两倍,新增了一些操作符和函数的返回类型声明,也增加了对匿名类的支持等。关于PHP 7的讨论在网上也逐渐展开。不过到目前为止,国内有关专门介绍PHP 7应用开发...

    PHP经典100例.

    PHP经典100例.,php教材实例,从基础到实践,由浅到深... 24:经典循环例子 25:for的高级运用 26:简单的函数 27:有返回值的函数 28:有默认参数的函数 29:判断整数 30:动态调用函数 31:一个简单的数组 32给数组增加...

    PHP编程网络大讲堂

    PHP数据处理篇(第5~10章),介绍在Web页面、字符串、函数、正则表达以及数组中的处理,PHP中的异常处理机制等;PHP高级进阶篇(第11~15章),介绍MySQL知识,通过PHP操作MySQL数据库,操作XML、文件、目录以及...

    PHP简明教程(word文档90页)

    笔者在教学实践中,曾拿它们直接作为教材使用,效果不是很好,感觉它们不便于直接作为教材使用,尤其是对课时40左右的PHP选修课程而言。 本讲义是作者根据自己在实际Web软件开发工作中,对使用PHP进行Web软件开发,...

    PHP+MySQL动态网站开发

    理论部分包括PHP技术概述和基本语法、字符串和正则表达式、数组和函数、文件和目录操作、PHP的异常处理机制、XML文件操作、Session和Cookie会话管理、Smarty模板引擎、Ajax技术和MySQL数据库。实战部分包括在线投票...

    pramda:PHP中的实用函数式编程

    但是实际上,函数式编程是关于您已经在日常实践中已经做过并且拥护的事情,最大限度地发挥了作用。 例如,您很可能一直在使用Composer。 软件包管理器(例如Composer)背后的想法是,您创建独立的工作,然后可以...

    php+mysql专家编程源码

    《PHP+MySQL专家编程》内容简介:构建当前需求最严苛应用程序的最佳实践和专家技能,作为世界上最流行、最通用的开放源代码脚本语言,PHP经常会与My SQL一起被用于构建大业务量、处理关键任务的应用程序。...

    PHP从入门到精通第二版

    3.8 PHP函数 3.9 PHP编码规范 3.10 小结 3.11 练习与实践 第4章 流程控制语句 视频讲解:30分钟 4.1 条件控制语句 4.2 循环控制语句 4.3 小结 4.4 练习与实践 第5章 字符串操作 视频讲解:1小时16分钟 5.1 字符串...

    MySQL/PHP数据库应用开发指南

    全书共分为5个部分,首先讲解了使用MySQL所需了解的数据库方面的知识,接着探讨了PHP的基本脚本语言、PHP函数以及编写可管理的简捷代码的技巧,然后给出了两个简单的应用程序,来宾簿和调查表,在实践中应用所学的...

    FramkPHP 快速易用PHP框架 v1.7.131110

    FramkPHP是一款运行轻畅、架构清晰的PHP框架,框架以“快速易用”为理念给php开发者提供网站建设的最佳实践,框架核心代码非常易读且嵌套少易于进行个性化扩展。 FramkPHP 快速易用PHP框架 v1.7.131110 更新日志:1....

    PHP MySQL Apache超强组合.rar

    本书不仅讲述了PHP的安装、编程方法及MySQL的使用方法,同时也附带了PHP最常用的函数库和MysQL常用的操作命令。 最实用 本书后面章节通过大量的经典实例进行全面细致讲解,理论知识融入到实践当中。

    《PHP专业实例开发 》[PDF]

    第8部分是进一步研究PHP函数和概念的快速查询手册。 本书的各个项目是建立一个大型在线购物网站的一个部分。将这些项目综合起来,读者最终将能够完成大型购物同站的创建。 本书既有详细的概念说明,又有复杂而完整的...

    大道PHPLAMPZend开源框架整合开发与实践视频

    教程名称:大道PHPLAMP Zend 开源框架整合开发与实践视频 源码课程目录:【】01Linux平台下PHP运行环境的搭建【】02PHP数据类型【】03PHP函数【】04数组【】05定义字符串【】06风格正则表达式函数【】07面向对象基础...

    MySQL/PHP数据库应用开发指南 PDF版 PART1

    全书共分为5个部分,首先讲解了使用MySQL所需了解的数据库方面的知识,接着探讨了PHP的基本脚本语言、PHP函数以及编写可管理的简捷代码的技巧,然后给出了两个简单的应用程序,来宾簿和调查表,在实践中应用所学的...

    网页制作与PHP语言应用.rar

    本书为普通高等院校网络传播系列教材之一,主要阐述了网页制作的基础知识与实践,以及PHP语言在网络传播中的应用。该书内容涉及:HTML基础知识、PHP的基本语法、PHP程序中的常用函数、数据库软件MySQL的基本操作、...

    PHP中register_shutdown_function函数的基础介绍与用法详解

    最近在看《PHP核心技术与最佳实践》,里面有使用到一个函数,register_shutdown_function,由于之前没有用过该函数,就去查了一下资料,就觉得是个很实用的函数,所以这里写一下这个函数的用法。下面话不多说了,来...

    PHP语言开发常见问题解决办法入门总结.docx

    实践指南:充分利用PHP内置的字符串处理函数如trim(), strpos(), 数组处理函数如array_filter(), array_map(),以及日期和时间处理函数,减少重复造轮子。 代码优化 提高性能:减少冗余代码,对循环、查询等耗时...

Global site tag (gtag.js) - Google Analytics