温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在PHP中实现变量传值赋值

发布时间:2021-06-07 16:36:36 来源:亿速云 阅读:242 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关怎么在PHP中实现变量传值赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体内容如下

<?php    $a = 100;    $b = 200;    var_dump($a,$b); //int(100) int(200)  ?>

php中,上面的代码,变量是怎么存放的呢?

怎么在PHP中实现变量传值赋值

上面的代码变动下,将变量b赋值给变量a,会发生什么?

<?php   $a = 100;   $b = 200;   $a = $b;/*多了这个*/   var_dump($a,$b); //int(200) int(200) ?>

问题来了,$a = $b,那么是将变量a的指针指向了变量b指针所指向的位置?还是变量a指向的位置的值变了?

怎么在PHP中实现变量传值赋值

引用赋值和上面传值赋值不同,引用赋值是两个变量指向一个地方,一旦这样,一改俱改。

怎么引用赋值呢?变量名前加&即可,

$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中实现变量传值赋值

<?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中实现变量传值赋值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI