当前位置:首页 > PHP > 正文内容

php引用变量的完全理解

高老师7年前 (2017-12-17)PHP1807

在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型.和其他语言有点差距.

(1).在值类型中我们直接使用&符号表示指向对应变量的内存地址,当前变量和被指向的变量只要有1个的值被修改都会直接影响另外一个变量的值发生变化。(ps:还是非常节省内存的,可以使用memory_get_usage()函数测试)

(2).在引用类型中可以直接使用赋值的方法表示引用,因为类和对象本身就是引用类型。(ps:引用类型赋值请用对象克隆)

如果您觉得引用变量您真的完全没有问题,可以参考下面的题目:

<?php

$data=['a','b','c'];

foreach($data as $key =>$value){
	$value=&$data[$key];
}

/
*1.请问每次循环$data的值是多少?
*2.程序执行完成$data的值是多少?
*/

?>

提示:foreach循环体中 $key和$value是在赋值,$value一直在引用变量,然后又赋值.

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:http://blog.20230611.cn/post/51.html

分享给朋友:

“php引用变量的完全理解” 的相关文章

php arrayaccess的应用场景:配置管理器

php arrayaccess的应用场景:配置管理器

上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...

php执行慢原因查找

php执行慢原因查找

今天帮朋友查询wordpress执行超级慢的原因,特此记录开启fpm的慢日志,记录执行超过30秒的脚本request_slowlog_timeout = 30 slowlog = var/log/slow.log查看日志[23-May-2019 17...

pcntl_signal(): Error assigning signal

pcntl_signal(): Error assigning signal

当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () {     posix_kill(0, SIGTERM); });...

在MyISAM引擎中使用事务会怎样

在MyISAM引擎中使用事务会怎样

众所周知MyISAM引擎不支持事务,但是我只是知道不支持事务,并未测试具体的表现是什么,测试代码如下:try {     //开启事务     Db::startTrans();    &...

php生成器yield from详解

php生成器yield from详解

PHP7中,通过生成器委托(yield from),可以将其他生成器、可迭代的对象、数组委托给外层生成器。外层的生成器会先顺序 yield 委托出来的值,然后继续 yield 本身中定义的值。同时yield from也能获取到生成器的返回值...

EasyTask使用redis队列教程

EasyTask使用redis队列教程

场景:模拟验证码发送。仅做代码演示。(1).创建一个验证码发送接口sendCaptcha/**  * 发送验证码  */ public function sendCaptcha() {     //外部参数(获...