很多站长朋友们都不太清楚php赋值后改变,今天小编就来给大家整理php赋值后改变,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 详解PHP变量传值赋值和引用赋值变量销毁 2、 PHP 赋值问题 3、 php如何赋值 4、 php赋值后 数组元素发生变化是什么原因?大神啊~~ 5、 Php赋值运算的疑惑 6、 在php中$a = $b; 和$a = &$b; 的区别? 详解PHP变量传值赋值和引用赋值变量销毁本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下
<?php
$a
=
100;
$b
=
200;
var_dump($a,$b);
//int(100)
int(200)
?>
php中,上面的代码,变量是怎么存放的呢?
上面的代码变动下,将变量b赋值给变量a,会发生什么?
<?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共同指向一个地址。
<?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)
一改俱改
?>
<?php
/*理解下面的话*/
$a
=
100;
//变量a赋值int
100
,100是基础数据类型,不是变量,是存在变量指向位置的
$a
=
$b;
//变量b的值
赋值
给变量a,变量a,b各有各的指向,执行之后,各是各的。
$a
=
$b;
//变量b的值的地址
赋值给变量
a
,变量a,b共用一个地址哦!一改俱改!
?>
<?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;这种方式销毁变量时,将会有如下影响:
<?php
$a
=
100;
$b
=
$a;
$a
=
null;
var_dump($a,$b);
//NULL
NULL
?>
这种方式,释放了内存,但是共用一个地址的另一个变量也受到了影响。
看看这两种方式在数组上的应用:
<?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错误提示It
is
not
safe
to
rely
on
the
system……的解决方法PHP随机数函数rand()与mt_rand()的讲解php微信扫码支付
php公众号支付PHP实现支持CURL字符串证书传输的方法PHP使用OB缓存实现静态化功能示例PHP使用mysqli同时执行多条sql查询语句的实例PHP中命名空间的使用例子PHP
SESSION机制的理解与实例PHP自动载入类文件函数__autoload的使用方法
PHP 赋值问题会的,代码的执行顺序是从上到下执行的,赋值给$subject就是在内存中开拓一块内存块,作为$subject的内存区域,当第二次赋值时,第一次依据申请了内存空间,就会去找那块内存,而不会继续申请新的内存块,于是这个内存块中的数据就被覆盖了
php如何赋值PHP赋值有多种情况:
直接赋值:赋值符号"=" ,赋值符号前面的是变量,后边的是赋的值;示例如下:
<?php
$a=10;
$b='baiduzhidao';
?
传递赋值:将一个表达式的值赋予一个变量(改变其中一个变量的值,不会影响到另一个变量的值);示例如下:
<?php
$num1=100;
$num2=$num1;//传值赋值后,$num2的值为:100
?
引用赋值:赋值符号"",当新的变量引用了原始变量的值后,如果改变新的变量将影响到原始变量。示例如下:
<?php
$a=3;
$b=5;
$a=$b; //把$b的地址赋值给$a, 这时$a的值也是5了。如果修改$b的值,那么$a的值也会发生变化。
?>
php赋值后 数组元素发生变化是什么原因?大神啊~~麻烦把相关语句都帖出来,目前的信息找不到原因。
调试的时候建议用print_r把变量或者数组输出,查找原因。
Php赋值运算的疑惑我晕,你把上面一条条分别测试就知道了。
你拿来一起测试,不小心大家还真被弄糊涂了。
x=3; y=5;
执行$x += $y后:$x = 8
5+3=8 对呀;
执行$x -= $y后:$x = 3
8-5=3 对呀; 注意,x已经是8了,不是3了
执行$x *= $y后:$x = 15
3*5=15 对呀;
执行$x /= $y后:$x = 3
15/5=3 对呀 注意,x已经是15了,不是3了
执行$x %= $y后:$x = 3
3%5 余3 对呀
你可能以为x一直等于3,是吧? 你不停给x赋值,x值是不停地变动的。
在php中$a = $b; 和$a = &$b; 的区别?在php中是引用的意思,PHP 的引用允许用两个变量来指向同一个内容。意思是,当这样做时:
<?php
$a = $b;
?>
这意味着 $a 和 $b 指向了同一个变量。 $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
关于php赋值后改变的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php赋值后改变 php变量赋值的详细内容...