- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解PHP变量传值赋值和引用赋值变量销毁由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例为大家分享了php变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下 。
1
2
3
4
5
|
<?php
$a
= 100;
$b
= 200;
var_dump(
$a
,
$b
);
//int(100) int(200)
?>
|
php中,上面的代码,变量是怎么存放的呢?
上面的代码变动下,将变量b赋值给变量a,会发生什么?
1
2
3
4
5
6
|
<?php
$a
= 100;
$b
= 200;
$a
=
$b
;
/*多了这个*/
var_dump(
$a
,
$b
);
//int(200) int(200)
?>
|
问题来了,$a = $b,那么是将变量a的指针指向了变量b指针所指向的位置?还是变量a指向的位置的值变了?
引用赋值和上面传值赋值不同,引用赋值是两个变量指向一个地方,一旦这样,一改俱改.
怎么引用赋值呢?变量名前加&即可, 。
$a = &$b,
这样赋予变量a的就不仅仅是变量b的值,而是变量b的地址,变量a和变量b共同指向一个地址.
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$a
= 100;
$b
= 200;
$a
= &
$b
;
var_dump(
$a
,
$b
);
//int(200) int(200)
/*变量b引用赋值给变量a后,ab指向同一个地址,将会一改俱改,如下:*/
$a
=500;
var_dump(
$a
,
$b
);
//int(500) int(500) 一改俱改
$b
= 700;
var_dump(
$a
,
$b
);
//int(700) int(700) 一改俱改
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php
/*理解下面的话*/
$a
= 100;
//变量a赋值int 100 ,100是基础数据类型,不是变量,是存在变量指向位置的
$a
=
$b
;
//变量b的值 赋值 给变量a,变量a,b各有各的指向,执行之后,各是各的。
$a
= &
$b
;
//变量b的值的地址 赋值给变量 a ,变量a,b共用一个地址哦!一改俱改!
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
/*
php中unset()是用来销毁变量的,但很多时候,unset()只把变量给销毁了,
内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。
这里可以用 变量=null 的方法来释放其内存
unset也会释放内存的情况
1. 在变量值所占空间超过255字节长的时候,unset(变量)才会释放内存
2. 只有当指向该值的所有变量都被销毁后,地址才会被释放(比如$a,$b都指向该值,仅仅unset($a);是不释放的,$b还是正常存在的)(也要执行1的判断)
*/
$a
= 200;
$b
= &
$a
;
unset(
$a
);
var_dump(
$a
,
$b
);
//null int(100)
?>
|
上面的代码,执行到unset($a)时候,就是将变量a的指向断开,同时将变量a扔出花名册,从下图可以看出,对变量b是没有影响的.
但是,如果用$a = null;这种方式销毁变量时,将会有如下影响:
1
2
3
4
5
6
|
<?php
$a
= 100;
$b
= &
$a
;
$a
= null;
var_dump(
$a
,
$b
);
//null null
?>
|
这种方式,释放了内存,但是共用一个地址的另一个变量也受到了影响.
看看这两种方式在数组上的应用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
$aaa
=
array
(
'a'
=>1,
'b'
=>2
);
unset(
$aaa
[
'a'
]);
print_r(
$aaa
);
//array ( [b] => 2 ) ,用unset,数组中这一项不存在了
$bbb
=
array
(
'a'
=>1,
'b'
=>2
);
$bbb
[
'a'
] = null;
print_r(
$bbb
);
//array ( [a] => [b] => 2 ) ,用 = null,数组中这一项还存在,只是为空了
?>
|
以上所述是小编给大家介绍的php变量传值赋值和引用赋值变量销毁详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
最后此篇关于详解PHP变量传值赋值和引用赋值变量销毁的文章就讲到这里了,如果你想了解更多关于详解PHP变量传值赋值和引用赋值变量销毁的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!