×

php变量赋值原理

php变量赋值原理(php有哪些赋值方式)

admin admin 发表于2023-04-03 14:01:07 浏览48 评论0

抢沙发发表评论

本文目录一览:

详解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中的全局变量是如何被赋值的

PHP

变量作用域

$count=0时,它是局部变量。作用域是当前函数一次调用。

,加入你的全局变量是$g_nVal,那么

$_GLOBAL['temp']=$g_nVal;

在把$_GLOBAL['temp']赋值给你的局部变量即可。

php框架的传值原理(如$this->assign())

class Base{

    private $var = array();//模板变量

   public function assign($name,$value=''){ //模板变量赋值

if(is_array($name)) {

            $this-var =  array_merge($this-var ,$name);

        }else {

            $this-var [$name] = $value;

        }

    }

    public function __set($name,$value) {//魔术方法,模板变量赋值

        $this-assign($name,$value);

    }

}

class A extends Base(){

public function xxx(){

         //下面两种方式是一样的

$this-assign("a",1);

$this-a = 1

}

}

然后在解析模板的时候用模板变量替换就OK