六、什么是常量?
1、常量的本质:只读变量,一旦定义,不能更新,不能删除
2、常量定义:函数定义(define())和关键字定义(const)
3、作用域:不受作用域影响
(1)常量通常全部用大写字母表示,字母太长用下划线分开,这是行业规则
(2)unset不能销毁常量
(3)常量不受作用域影响
(4)用define和const的区别,一般情况下没有分别:const只允许定义简单变量(整数、浮点、布尔、字符串必须是字面量),define可以这样写
$book = 'PHP从入门到精通'; define('FACTION',$book);
(5)const可以声明类常量,define不可以
class xujiaqi { const NAME = 'xujiaqi'; // define('NAME','xujiaqi'); define不能声明类常量 } echo xujiaqi::NAME;
总结:常量只是一个普通的只读变量,不能更新不能删除不能销毁
-------------------------------------------------------------------------------------------------------------------------------
七、函数分为哪几种?
1、普通函数:也叫标准函数,使用function在全局中声明。
2、匿名函数:将函数定义以值得方式赋值给一个变量,常用作回调或者闭包
3、自调用函数:定义与执行同步完成
2、匿名函数:非常适合用变量引用,匿名函数得本质就是一个值,只不过这个值里面得保存是一个函数得定义
匿名函数最重要的两个用途:回掉函数,闭包
$mult = function($a,$b){ return "$a+$b=".($a+$b); }; echo $mult(2,2);
-------------------------------------------------------------------------------------------------------------------------------
八、函数参数
1、必选参数:调用函数是必须传入参数,且顺序必须相同
2、可选参数:可选参数必须与参数得默认值配合使用
3、无参数:通过系统函数来获取参数,其实参数本质就是一个占位符
-------------------------------------------------------------------------------------------------------------------------------
九、什么是回调函数
回调函数:简单得说,在一个函数中调用另一个函数
1、支持得函数类型:普通函数,匿名函数
2、执行回调函数:call_user_func() / call_user_func_array()
参数可以是一个函数,可以是一个回调函数:
function bigger($a,$b){ return 'a和b中较大的值是?'.(($a > $b) ? $a : $b); } function main($a){ return $a(11,12); } echo main('bigger');
$bigger = function($a,$b){ return 'a和b中较大的值是?'.(($a > $b) ? $a : $b); }; function main1($a){ return $a(1,2); } echo main1($bigger);
3、使用内置方法调用回调函数
$bigg = function($a,$b){ return 'a和b中较大的值是?'.(($a > $b) ? $a : $b); }; echo call_user_func($bigg,200,500);
$bigg = function ($a,$b){ return 'a和b中较大的值是?'.(($a > $b) ? $a : $b); }; echo call_user_func_array($bigg,[30,20]);
-------------------------------------------------------------------------------------------------------------------------------
十、玩转匿名函数与闭包
1、在函数中调用一个匿名函数时
2、当匿名函数当作参数传递给函数时
3、当匿名函数当作函数返回值的时候
匿名函数其实就是一个普通的变量,1.局部变量,2.函数的参数,3.函数返回值
在PHP里匿名函数就是闭包函数
$str1 = function(){ $name = '张无忌'; // 在函数中声明一个匿名函数 $str2=function()use($name){ return $name.'不要我啦!'; }; // 调用,必须执行一下,才能形成闭包 return $str2(); }; echo $str1();
必须使用callable限制值,是闭包类型
$name = '无忌哥哥'; $str3=function()use($name){ return $name.'今晚去哪里开波?'; }; $str4 = function(callable $str3){ return $str3(); }; echo $str4($str3);
$func3返回的是一个匿名函数的定义$test,如果要调用需要在外部多加一个()圆括号
$func3 = function(){ $name = '我是局部函数返回的字符串'; $test3 = function()use($name){ return $name; }; return $test3; }; //$func3()返回值是一个匿名函数的定义:$test echo $func3()();
十一、PHP中的分支结构有几种?
if(条件){语句}
if(条件){语句1}else{语句2}
if(条件1){语句1}elseif(条件2){语句2}elseif(条件){语句2}...
switch(条件) { case 条件1: 语句1; break; case 条件2: 语句2; break; case 条件3: 语句3; break; ........ default: 语句1; break; }
1、双分支可以写成三元元算符: (条件)?真:假
2、switch语句常用场景,根据变量的值快速匹配:
$brand = 'MI'; $brand = strtolower($brand); switch($brand){ case($brand === 'apple'): echo '你个死扑街,买水果9'; break; case($brand === 'huawei'): echo '算你有爱国心,买华为'; break; case($brand === 'mi'): echo '算你有爱国心,买小米9'; break; case($brand === 'cuizi'): echo '你个死扑街,浪费钱买锤子'; break; default: echo '傻逼,你选的手机还没研发出来'; }