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
    
  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/IronMind/p/13265359.html
Copyright © 2011-2022 走看看