什么是php变量传值(什么是php变量传值方法)

发布时间:2022-11-08

本文目录一览:

  1. 详解PHP变量传值赋值和引用赋值变量销毁
  2. php 引用变量与普通变量之间有何区别?如何通过引用传值?在什么情况下会这样做?
  3. php中传值与传引用的区别?
  4. php数组变量的传值
  5. php 传值跟引用到底是怎么回事
  6. 请说明php中传值与传引用的区别.什么时候传值什么

详解PHP变量传值赋值和引用赋值变量销毁

本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下

$a = 100;
$b = 200;
var_dump($a, $b);
//int(100) int(200)

PHP中,上面的代码,变量是怎么存放的呢? 上面的代码变动下,将变量$b赋值给变量$a,会发生什么?

$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共同指向一个地址。

$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)
一改俱改
/*理解下面的话*/
$a = 100;
//变量$a赋值int 100,100是基础数据类型,不是变量,是存在变量指向位置的
$a = $b;
//变量$b的值赋值给变量$a,变量$a,$b各有各的指向,执行之后,各是各的。
$a = &$b;
//变量$b的值的地址赋值给变量$a,变量$a,$b共用一个地址哦!一改俱改!

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;这种方式销毁变量时,将会有如下影响:

$a = 100;
$b = $a;
$a = null;
var_dump($a, $b);
//NULL NULL

这种方式,释放了内存,但是共用一个地址的另一个变量也受到了影响。 看看这两种方式在数组上的应用:

$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引用变量与普通变量之间的区别是二者之间的赋值分别是引用传递和值传递。传值是每个变量都有自己的空间。而引用传递则是多个变量公用一个变量空间。基本数据类型往往是值传递,而复合数据类型如数组却是引用传递多。

php中传值与传引用的区别?

  • 传值要重新构造一份原参数的拷贝。
  • 传引用则不需要。
  • 传值对参数的修改不会改变原参数。
  • 传引用时可以直接修改原参数。 至于什么时候传引用,这看你的需要。 如果你的参数对象比较大(占用内存很多),而函数本身不需要修改原对象时,这个时候就推荐传引用,可以省去临时对象的构造开销。 如果你有实际修改原参数的需要,那么就只能传引用了。

php数组变量的传值

echo '<td><a href="lj.php?action='.$row[0].'">'.$row[1]."</a></td>";

把这个改成:

echo '<td><a href="lj.php?action='.$row['x_id'].'">'.$row['x_name']."</a></td>";

php 传值跟引用到底是怎么回事

变量存储数据时可以理解为变量的值放在一个空间里,而变量有一个地址指向那个空间,就如你的$test="aaaaa";变量$test就有一个地址指向存储了aaaaa的空间。 当$abc = $test;这时就是把$test指向那个空间的地址赋给了$abc,所以当$abc取出的值跟$test是一样的,都访问的同样的一个空间。 同样当改变$abc的值时(如$abc="bbbbb")就是直接改变了那个空间里的值,这时你会发现$test的输出值也跟着改变了,这就是引用。 如果是直接赋值,即$abc = $test;这时就会有一个新空间,存储的值也是aaaaa,并且$abc的地址指向这个新空间,这时$abc$test两个变量的值相同,但他们相互不影响了,改变其中的一个值另外一个不影响,这就是传值。 你这里是因为在引用之后才销毁的变量$test,这时变量$test不存在了,但存储值aaaaa的那个空间还存在,并且$abc的地址指向那个空间,所以echo $abc就输出aaaaa。 希望我的回答能帮到你!

请说明php中传值与传引用的区别.什么时候传值什么

  • 传值:是把实参的值赋值给行参,那么对行参的修改,不会影响实参的值。
  • 传引用:真正的以地址的方式传递参数,传递以后,行参和实参都是同一个对象,只是他们名字不同而已。对行参的修改将影响实参的值。 所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。 所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。