博客列表 >总结函数的返回值,参数

总结函数的返回值,参数

逃逃
逃逃原创
2021年08月16日 02:27:57817浏览

总结函数的返回值,参数

名词解释

  • 函数(全局成员):完成特定功能的代码块
  • 函数形参:不调用函数
  • 函数实参:调用函数时,有实参时,调用时必须传实参
  • 命名函数是全局成员 不受作用域限制

函数结构

function 函数名称([参数列表 -形参])
{
函数体
return 返回值
}

自定义函数

function divide($one,$two)
{
return $one/$two;
echo ‘你好’; //这句不执行
}
echo divide(99,9);

return 返回值

  • 函数只能返回单个值 如果想返回多个值,返回一个数组,对象。
  • return 后面的代码不会被执行

function demo()
{
return sha1(‘wwwphpxnccsdsds’); //返回 40 位长度
return md5(‘wwwphpcn’); //返回 32 位长度
return 1==1;
return new StdClass;
return array(‘12’,’45’);
return 88.88;
return ‘nihao’;
return true;
}
var_dump(demo());

多个值以数组的形式返回

function test()
{
return [‘status’=>1,’msg’=>’登录成功’];
}
print_r(test());

多个值以对象的形式返回

function demo2()
{
return new class()
{
public $name = ‘dianNao’;
public $fenLie = ‘dianQi’;
}
}
$obj = demo2(); //接收
var_dump($obj);echo; //打印对象
echo $obj->name; //访问对象
echo [‘name’]; //访问数组

多个值以 json 字符串的方式返回

function demo3()
{
return json_encode([‘status’=>1,’msg’=>’验证成功’]);
}
var_dump(demo3());
echo ‘<hr>‘;
$res = demo3();
var_dump( json_decode($res,true) ); //json_decode()第二个参数设为 true 拿到数组

函数参数

  • 参数为函数的调用者提供一个接口去改变函数体的执行行为
  • 可以多个,也可以是 0,多个参数用,隔开
  • 没有参数, 函数的执行任务是固定的
  • 形参和实参数是一样的
  • 参数列表是从左往右传值

封装函数

//返回一个 3 行 2 列的表格
$table = “<table border ='1' cellspacing='0' >“;
for ($i=0; $i < 8; $i++) {
$table .= “<tr>“;
for ($j=0; $j < 7 ; $j++) {
$table .= “<td>西</td>“;
}
$table .= “</tr>“;
}
$table .= ‘</table>‘;
echo $table;

  • 封装函数

function createTable(int $rows,int $cols,string $content,string $bgColor) :string
{
$table = “<table border ='1' cellspacing='0' bgColor='$bgColor'>“;
for ($i=0; $i < $rows; $i++) {
$table .= “<tr>“;
for ($j=0; $j < $cols ; $j++) {
$table .= “<td>$content</td>“;
}
$table .= “</tr>“;
}
$table .= ‘</table>‘;
return $table;
}
echo createTable(3,6,’宏’,’red’);

  • 不传参数或者少传参数,都会使用默认的参数值,如果用户传了参数,会发生覆盖

剩余参数

  • 剩余参数:适应于参数的个数不确定

if(!function_exists(‘test’))
{
function test($a,$b,$c,$d,$e)
{
return $a+$b+$c+$d+$e;
}
echo test(1,2,3,4,5);
}

  • 剩余参数用在参数列表中表示收集的作用

function test1(…$args){//剩余参数用在参数列表中表示收集的作用
// var_dump($args);
return array_sum($args);
}
echo test1(234,34324,23232,1,2,3);

  • 剩余参数用在函数的调用表达式中 :展开

$arr = [23,34,56,6557];
echo test1(…$arr);

  • 数据库的连接

function connect(…$arg)
{
return new PDO($arg[0],$arg[1],$arg[2]);
}
$pdo = connect(‘mysql:dbname=chloe’,’root’,’zhoujielun521’);
var_dump($pdo);
if($pdo) echo “数据库连接成功”;


匿名函数以及变量作用域

匿名函数,闭包 closure 允许临时创建一个没有名称的函数

function getName($name)
{
return “欢迎{$name}来到京东花园<br>“;
}
echo getName(‘小皮皮’);

变量作用域

  • 全局变量:函数体外声明的变量

$itemName = ‘iphone 12 pro max 256g’;
$itemPrice = 12585;
function getItemInfo()
{
return sprintf(‘今日主推产品是%s, 商品价格是%d’,$itemName,$itemPrice);
}
// echo getItemInfo();//结论:全局变量在函数体内是无法访问的
// 解决方法 global $GLOBALS
function getItemInfo_pro()
{
// global $itemPrice,$itemName;
return sprintf(‘今日主推产品:%s, 商品价格: %d<br>‘,$GLOBALS[‘itemName’], >$GLOBALS[‘itemPrice’]);
}
echo getItemInfo_pro();

  • 局部变量:在函数体内声明的变量

function add()
{
// 子作用域
$leftNum = 25;
$rightNum = 56;
echo “$leftNum + $rightNum = “ .($leftNum + $rightNum);
}
add();
echo $leftNum;
//闭包
$closure1 = function() use ($itemName,$itemPrice)
{
return sprintf(‘今日主推产品是%s, 商品价格是%d’,$itemName,$itemPrice);
};
echo $closure1();
// 闭包作为函数的返回值
function getSite($site)
{
return function($color) use ($site)
{
return sprintf(‘<h1 style="color:%s"><center>%s</center></h1>‘,$color,$site);
};
}
// getSite()函数的返回值是一个闭包 $closure2
$closure2 = getSite(‘淘宝网’);
echo $closure2(‘orange’);
echo getSite(‘淘宝网’)(‘orange’);
// 闭包可以改变全局变量上下文的值 :通过引用传递
$name = ‘灭绝小师太’;
$closure3 = function($newName) use (&$name)
{
$name = $newName;
};
$closure3(‘欧阳克’);
echo $name;

命名空间

  • 针对全局成员:常量 函数 类 接口

//函数的命名空间
namespace ns1{
function demo(){
return FUNCTION;
}
// echo demo();ns1\demo
}
// 全局空间
namespace {
function demo(){
return FUNCTION;
}
echo demo();
}


函数区分图

序号 分类 作用域 名称
1 系统函数 全局调用
2 自定义函数 全局调用
3 匿名函数 限制

函数名词解析图

序号 函数 功能
1 abs 求绝对值
2 strlen 求长度
3 json_encode 转大写
4 strtoupper() 数组转为 json 字符串
5 json_decode() 转为 json 字符串转为数组,第二个参数设为 true 拿到数组
6 array_sum() 计算数组的各个成员的和
7 connect() 连接数据库

笔记

  • 函数放在对象中被称为方法
  • 数组不可以 echo
  • new 的都是类
  • 双引号可以解析变量
  • …$args 是剩余参数
  • 剩余参数适用于数据库的连接
  • PDO 是系统中的类
  • php 回调是指在主线程函数执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议