php中fun($param)和fun(&$param)的区别

本文详细解释了PHP中变量的引用与赋值的区别。通过示例代码展示了普通赋值时,两个变量指向不同的内存地址;而使用引用赋值时,两个变量指向同一个内存地址,因此一个变量的变化会影响另一个变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


首先你要明白指针的概念,不过php的指针和c的指针有一些不同
$a = $b;
是把$b的值赋值给$a,如果赋值后,$b的值改变了,$a的值是不会改变的


$a =&$b;
这个是把$b的地址传递给$a,这个时候,$a和$b都指向内存中的同一块地址,所以如果赋值后,你改变了$b的值,$a的值也是会改变的


举个例子
$b = 1;
$a = $b;
$b = 2;
echo $b; //打印2
echo $a; //打印1
undefined1 cef_browser_host_create_browser (longlong param_1,undefined8 param_2,longlong param_3,longlong param_4,undefined8 param_5, undefined8 param_6) { undefined1 uVar1; double in_XMM0_Qa; undefined1 auStack_248 [32]; undefined8 local_228; undefined8 local_220; undefined8 local_210; undefined ***local_208; longlong local_200; undefined1 local_1f8; undefined8 local_1f0; undefined8 local_1e8; undefined **local_1e0; undefined8 local_1d8; undefined1 local_1d0 [272]; longlong local_c0; undefined **local_b8; undefined8 local_b0; undefined8 uStack_a8; undefined8 local_a0; undefined8 uStack_98; undefined8 local_90; undefined8 uStack_88; undefined8 local_80; undefined8 uStack_78; undefined8 local_70; undefined8 uStack_68; undefined8 local_60; undefined8 uStack_58; longlong local_50; ulonglong local_48; /* 0x81d0 13219 cef_browser_host_create_browser */ local_48 = DAT_189b06ea8 ^ (ulonglong)auStack_248; v8::internal::ConvertDouble<double>(in_XMM0_Qa); uVar1 = 0; if ((param_1 != 0) && (param_4 != 0)) { local_60 = 0; uStack_58 = 0; local_70 = 0; uStack_68 = 0; local_80 = 0; uStack_78 = 0; local_90 = 0; uStack_88 = 0; local_a0 = 0; uStack_98 = 0; local_b0 = 0; uStack_a8 = 0; local_50 = 0; local_b8 = &PTR_FUN_18849f438; FUN_1800083a2(&local_b8,param_1,0); local_1e0 = &PTR_FUN_18849f448; memset(local_1d0,0,0x118); local_1d8 = 0x118; FUN_18000c900(param_4,&local_1d8,0); FUN_180008408(&local_1e8,param_6); FUN_180008480(&local_1f0,param_5); local_208 = &PTR_FUN_18849f050; local_200 = 0; local_1f8 = 0; if (param_3 != 0) { FUN_1800039c0(&local_208); local_200 = param_3; } local_1f8 = 0; FUN_1800084f8(&local_210,param_2); local_220 = local_1e8; local_228 = local_1f0; uVar1 = FUN_182edb8c8(&local_b8,local_210,&local_208,&local_1e0); local_208 = &PTR_FUN_18849f050; FUN_1800039c0(&local_208); local_1e0 = &PTR_FUN_18849f448; if (local_c0 == 0) { FUN_18000c89e(&local_1d8); } local_b8 = &PTR_FUN_18849f438; if (local_50 == 0) { cef_string_utf16_clear(&uStack_a8); } } FUN_18848a3e0(local_48 ^ (ulonglong)auStack_248); return uVar1; }
最新发布
08-07
public function cache($key, $expire = null, $except = [], $tag = null) { if (!is_array($except)) { $tag = $except; $except = []; } if (false !== $key && $this->isGet() && !$this->isCheckCache) { // 标记请求缓存检查 $this->isCheckCache = true; if (false === $expire) { // 关闭当前缓存 return; } if ($key instanceof \Closure) { $key = call_user_func_array($key, [$this]); } elseif (true === $key) { foreach ($except as $rule) { if (0 === stripos($this->url(), $rule)) { return; } } // 自动缓存功能 $key = '__URL__'; } elseif (strpos($key, '|')) { list($key, $fun) = explode('|', $key); } // 特殊规则替换 if (false !== strpos($key, '__')) { $key = str_replace(['__MODULE__', '__CONTROLLER__', '__ACTION__', '__URL__', ''], [$this->module, $this->controller, $this->action, md5($this->url(true))], $key); } if (false !== strpos($key, ':')) { $param = $this->param(); foreach ($param as $item => $val) { if (is_string($val) && false !== strpos($key, ':' . $item)) { $key = str_replace(':' . $item, $val, $key); } } } elseif (strpos($key, ']')) { if ('[' . $this->ext() . ']' == $key) { // 缓存某个后缀的请求 $key = md5($this->url()); } else { return; } } if (isset($fun)) { $key = $fun($key); } if (strtotime($this->server('HTTP_IF_MODIFIED_SINCE')) + $expire > $_SERVER['REQUEST_TIME']) { // 读取缓存 $response = Response::create()->code(304); throw new \think\exception\HttpResponseException($response); } elseif (Cache::has($key)) { list($content, $header) = Cache::get($key); $response = Response::create($content)->header($header); throw new \think\exception\HttpResponseException($response); } else { $this->cache = [$key, $expire, $tag]; } } } 分析下利用链
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值