zoukankan      html  css  js  c++  java
  • php基础-7

    PHP 函数

    在本章中,我们将为您讲解如何创建自己的函数。

    如要在页面加载时执行脚本,您可以把它放到函数里。

    函数是通过调用函数来执行的。

    你可以在页面的任何位置调用函数。


    创建 PHP 函数

    函数是通过调用函数来执行的。

    语法

    <?php 
    function functionName() 
    {    
        // 要执行的代码 
    } 
    ?>
    

    PHP 函数准则:

    • 函数的名称应该提示出它的功能
    • 函数名称以字母或下划线开头(不能以数字开头)

    1 函数

    1、函数就是一段代码块

    2、函数可以实现模块化编程

    1.1 函数定义

    function 函数名(参数1,参数2,...){
        //函数体
    }
    

    通过函数名()调用函数

    <?php
    //定义函数
    function show() {
    	echo '锄禾日当午<br>';
    }
    //调用
    show();		//锄禾日当午
    SHOW();		//锄禾日当午  函数名不区分大小写
    

    小结:

    1、变量名区分大小写

    2、关键字、函数名不区分大小写

    1.2 可变函数

    将函数名存储到变量中

    <?php
    function show($args) {
    	echo $args,'<br>';
    }
    $str='show';	//将函数名保存到变量中
    $str('锄禾日当午');
    

    例题:随机调用函数

    <?php
     //中文显示
    function showChinese() {
    	echo '锄禾日当午<br>';
    }
    //英文显示
    function showEnglish() {
    	echo 'chu he re dang wu<br>';
    }
    //测试
    $fun=rand(1,10)%2?'showChinese':'showEnglish';   //可变变量
    $fun();
    

    1.3 匿名函数

    匿名函数就是没有名字的函数

    <?php
    //匿名函数
    $fun=function(){
    	echo '锄禾日当午<br>';
    };
    //匿名函数调用
    $fun();
    

    1.4 参数传递

    函数的参数有形式参数和实际参数

    形式参数是定义函数时候的参数,只起形式的作用,没有具体的值

    实际参数的调用函数时候的参数,有具体的值

    <?php
    function fun($num1,$num2) {
    	echo $num1+$num2;
    }
    fun(10,20);		//30
    

    默认情况下,参数的传递是值传递

    <?php
    $num=10;
    function fun($args) {
    	$args=100;
    }
    fun($num);
    echo $num;		//10
    

    地址传递

    <?php
    $num=10;
    //地址传递
    function fun(&$args) {   //&符表示取地址
    	$args=100;
    }
    fun($num);
    echo $num;		//100
    

    小结

    1、函数的参数默认是值传递

    2、如果要传递地址,在参数前面加&

    3、如果是地址传递,不能直接写值

    function fun(&$args) {
    	$args=100;
    }
    fun(10);   //Fatal error: Only variables can be passed by reference (只有变量才能传递引用)
    

    1.5 参数默认值

    1、在定义函数的时候给形参赋值就是参数的默认值

    <?php
    //参数的默认值
    function fun($name,$add='地址不详') {
    	echo '姓名:'.$name,'<br>';
    	echo '地址:'.$add,'<hr>';
    }
    //测试
    fun('tom','北京');
    fun('berry');
    

    2、默认值必须是值,不能用变量代替

    <?php
    $str='地址不详'
    function fun($name,$add=$str) {   //错误,默认值可以使用变量
    	echo '姓名:'.$name,'<br>';
    	echo '地址:'.$add,'<hr>';
    }
    

    3、默认值可以使用常量

    <?php
    define('ADD','地址不详');
    function fun($name,$add=ADD) {    //默认值可以使用常量
    	echo '姓名:'.$name,'<br>';
    	echo '地址:'.$add,'<hr>';
    }
    //测试
    fun('berry');
    

    4、有默认值的写在后面,没有默认值的写在前面

    <?php
    //没有默认值的写在前面,有默认值写在后面
    function fun($name,$age='未知',$add='地址不详') {
    	echo "姓名:{$name}<br>";
    	echo "年龄:{$age}<br>";
    	echo "地址:{$add}<br>";
    }
    fun('tom');
    //运行结果
    姓名:tom
    年龄:未知
    地址:地址不详
    

    1.6 参数个数不匹配

    <?php
    function fun($num1,$num2) {
    	echo $num1,'<br>';
    	echo $num2,'<br>';
    }
     //fun(10);	//实参少于形参(报错)
    fun(10,20,30); //实参多于形参,只取前面对应的值
    

    获取所有传递的参数

    <?php
    function fun() {
    	//echo func_num_args(),'<br>';	//获取参数的个数
    	$args=func_get_args();	//获取参数数组
    	print_r($args);
    }
    fun(10);
    fun(10,20);
    fun(10,20,30); 
    

    1.7 参数约束

    1、定义变长参数(了解)

    <?php
    // ...$hobby包含了除了前面两个参数以外的所有参数
    function fun($name,$age,...$hobby) {
    	echo '姓名:'.$name,'<br>';
    	echo '年龄:'.$age,'<br>';
    	print_r($hobby);
    	echo '<hr>';
    }
    fun('tom',22);
    fun('berry',25,'读书','睡觉');
    

    运行结果

    多学一招:数组作为参数

    function fun(...$args) {
    	print_r($args);
    	echo '<br>';
    }
    $num=[10,20];
    echo '<pre>';
    fun(...$num);   //将数组中的参数展开
    //运行结果
    /*
    Array
    (
        [0] => 10
        [1] => 20
    )
    */
    

    2、参数类型约束

    //类型约束
    function fun(string $name,int $age) {
    	echo "姓名:{$name},'<br>'";
    	echo "年龄:{$age}<br>";
    }
    fun('tom',22);
    //约束$name是字符串型,$age是整型
    

    3、返回值约束

    function fun(int $num1,int $num2):int //必须返回整型
    {  
    	return $num1+$num2;
    }
    echo fun(10,20);		//30
    

    可以约束:string、int、float、bool、数组

    //约束返回类型是数组
    function fun():array {
    }
    //约束return后面不能有返回值  必须在7.1以后的版本中才支持
    function fun():void {    //void是空的意思
    	return;
    }
    fun();
    

    2 return

    2.1 终止脚本执行

    <?php
    echo '锄禾日当午<br>';
    return;			//终止脚本执行
    echo '汗滴禾下土<br>';	//不执行
    

    提醒:return只能中断当前页面,如果有包含文件,只能中断包含文件

    例题:

    6-demo.php

    <?php
    echo '锄禾日当午<br>';
    require './test.php';    //包含文件
    echo '汗滴禾下土<br>';
    

    test.php

    <?php
    echo 'aaa<br>';// 这一行还是会打印出来
    return;   //只能中断test.php
    echo 'bbb<br>';
    

    运行结果

    如果要完全终止脚本执行,使用exit()、或die()

    echo 'aaa<br>';
    exit();  //die()
    echo 'bbb<br>';
    >>>
    锄禾日当午
    aaa
    

    2.2、返回页面结果

    test.php

    <?php
    return array('name'=>'tom','sex'=>'男');
    

    6-demo.php

    <?php
    $stu=require './test.php';
    print_r($stu);  //Array ( [name] => tom [sex] => 男 ) 
    

    小结:在项目中引入配置文件就使用这种方法

    2.3 函数的返回和终止

    return在函数中使用作用有二
    1、终止函数执行

    2、返回值

    function fun() {
    	echo 'aaa';
    	return ;		//终止函数执行
    	echo 'bbb';
    }
    fun();   //aaa
    ----------------------------------
    function fun() {
    	return 10;	//返回值
    }
    echo fun();		//10
    
  • 相关阅读:
    【计算机网络】WebSocket实现原理分析
    【计算机网络】如何让Ajax通信过程携带Cookie呢?
    【计算机网络】HTTPS协议的传输细节及过程分析
    【计算机网络】UDP基础知识总结
    前端知识体系-NodeJS相关】NodeJS基础知识全面总结
    【前端知识体系-NodeJS相关】对NodeJS模块机制的理解
    【前端知识体系-NodeJS相关】对于EventLoop(事件轮询)机制你到底了解多少?
    【前端知识体系-JS相关】你真的了解JavaScript编译解析的流程吗?
    【前端知识体系-NodeJS相关】浅谈NodeJS中间件
    linux安装electron
  • 原文地址:https://www.cnblogs.com/IronMind/p/13265359.html
Copyright © 2011-2022 走看看