// !设置时区,有个类同查询时区的函数date_default_timezone_set("PRC");// 查询时区函数echo date_default_timezone_get();// todo命名函数,$a与$b为形参,调用时需传入实际参数function sum($a,$b){return $a+$b;};// 调用命名函数echo sum(10,20);echo '<pre>';echo date("Y-m-d H:i:s");echo '<pre>';// * ()括号内的string表示参数只能传字符串类型,后面的string表示返回值只能是字符串类型function total(string $total):string{return "{$total}的优质商品";};// 因上面的函数指定了传参类型,调用时只能传指定类型参数echo total('物美价廉');echo total(10);//就算传入整型也会自动被转换成字符串型echo '<pre>';/*** 参数:可选的,对外提供一个接口,供函数调用者按照自已的意愿改变函数体内的执行行为*参数 有形参和实参* 默认参数就是有默认值的参数,如果不传或少传就会默认参数的值* 参数是从左往右求值,所以默认参数要放在右边*/function getAmount(&$price,$num,$discount=0.9){// *=是$price = $price*$discount的简写$price *= $discount;$amount = $price*$num;return "总共需要支付{$amount}";};// *如果函数使用&引用符,将会改变全局变量的值$price = 800;$num = 5;$discount = 0.8;echo getAmount($price,$num,$discount);//因函数使用了&引用符,所以变量的值将会改变输出echo $price;// !函数返回值,可以任意类型function test(){// 返回json类型的数据,后面的320代表不转义中文和\return json_encode(['id'=>1,'name'=>'转json格式'],320);// 返回表达式布尔值return '1'==1;// 返回MD5加密字符串return md5('123456');// 返回对象return new stdClass();// 返回多维数组return array([['id'=>1,'name'=>'张三','conten'=>'多维数组'],['id'=>2,'name'=>'李四','conten'=>'多维数组'],[ 'id'=>3,'name'=>'王五','conten'=>'多维数组'],]);return array('id'=>1,'name'=>'张三','conten'=>'关联数组');return array('123','索引数组');//返回关联数组return '返回字符串';// 返回浮点型return 25.55;return 1;//返回整型};$res = test();var_dump($res);// !命名函数全局变量的调用方法$name = '张老师';$tel = 13800138000;function test1(){/*** 函数内要调用全局中的变量方法* 1 使用全局变量引入global* 2 使用超全局变量$GLOBALS['name']* */// 全局引用global $name,$tel;return "{$name}的手机号码是{$tel}";// 超全局调用return "{$GLOBALS['name']}的手机号码是:{$GLOBALS['tel']}";};// 调用函数echo test1();/*** !匿名函数或叫回调函数的全局变量调用方法*匿名函数调用全局方法 use (全局变量名)*///$test2 = function () use ($name,$tel){return "{$name}的手机号码是:{$tel}";};// 调用匿名函数echo $test2();// 回调函数调用方法Closure 代表闭包echo "<pre>";function test3( Closure $func,$qq){$msg = $func();return "{$msg}<br>QQ号码是:{$qq}";};echo test3($test2,'123456');echo '<pre>';$arr2 = [1,10,30,45,28,30,22];$arr = range(0,500);$odd =function($arr){for($i = 0 ; $i < count($arr); $i++){if($arr[$i] % 2 ==0){$newArr[] = $arr[$i];}}return $newArr;};// 第一个参数为匿名函数,第二个为传任意数组function newSum($func,$arr){$newArr = $func($arr);return array_sum($newArr);};// todo 调用传参第一个是匿名函数的变量名,第二个参数为任意数组var_dump(newSum($odd,$arr));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号