Blogger Information
Blog 16
fans 0
comment 0
visits 11227
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
总结函数的返回值,参数
逃逃
Original
818 people have browsed it

总结函数的返回值,参数

名词解释

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

函数结构

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 回调是指在主线程函数执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post