PHP 函数传值和传引用的区别
2023-02-19 12:29:04 时间
1. 函数传值和传引用的区别
传值 : 默认情况下, 函数参数通过值传递, 所以即使在函数内部改变参数的值也不会改变函数外部的值
传引用 : 就是在函数的参数前面添加 &
符号, 表示函数参数必须为引用地址, 不能是一个具体的值, 在函数内部对该参数所做操作会应用函数外部的该变量
引用传递官方手册 : https://www.php.net/manual/zh/language.references.pass.php
2. 传值、传引用举例
传值的函数
$abc = 'Hello World';
echo $abc . '<br>'; //Hello World
echo strtolower($abc) . '<br>'; //hello world
echo $abc . '<br>'; //Hello World
传引用的函数
echo '<pre>';
$arr = [3, 1, 2];
var_dump($arr);//[3, 1, 2]
sort($arr);
var_dump($arr);//[1, 2, 3]
错误示例
以下用法将抛出异常 : Cannot pass parameter 1 by reference
, 报错译文: 第一个参数无法通过引用传递
sort([3, 1, 2]);
3. 引用传递没有定义的变量
使用示例
$where = ['id' => 1, 'name' => '张三'];//查询条件
$where = where_filter($where, $fields);//构建搜索器参数
$data = User::withSearch($fields, $where)->select();
自定义函数, 用于TP6搜索器
/**
* 去掉数组空字符串,返回所有键
*
* @param array $where
* @param array $keys
* @return array
*/
function where_filter(array $where, &$keys)
{
// 去掉数组里的空值 (会正常返回:false、0)
$where = array_filter($where, function ($k) {
return ($k === '' || $k === null) ? false : true;
});
// 拿到所有键
$keys = array_keys($where);
// 返回数组
return $where;
}
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023