欢迎访问巨立鑫电脑培训官方网站! 网址:http://www.jlxpx168.com

在线报名 | 联系我们

学校动态 行业资讯

php变量中的特殊情况

点击:发布日期:2019-05-17作者:

变量中的特殊情况

 

1.一个是我们的可变变量,一个是我们的应用赋值的情况,首先来看第一个可变变量,那什么叫可变变量呢?其实呢比较简单记住一个原则就可以了。

 

2.等量代换的原则,这等量代换的原则以后在我们的程序中也经常会使用到,我们来看开例子,什么叫可变变量。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;

 

 

那首先呢你看到,上方声明了三个变量,分别是A,B,C,那接着你在下方写的是echo $$$a;你看到$a的是谁啊,是b对那现在,你碰到$b的值s是c,接着$c的值正好之d,其实就是一个等量代换的原则。

 

3.你这样写的时候就相当于写了,$$b->$c,这样的一个效果。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c

 

 special1.png

 

结果是d,没有问题这样的一个情况。那接着再往下,再来看第二个引用赋值;什么叫引用赋值呢,先抛出引用赋值不说,首先我们在这声明一个变量,echo '<hr/>';给大家画个图,声明一个变量呢,就相当于在内存中开辟了一块空间,来存储这个值。

 

special2.png

 

假如这是我们的内存。

 

special3.png

 

现在你声明了一个变量,$a=1.

 

special4.png

 

就相当于在这,开辟了一块空间来存储,你这个变量的值,它的大小为1,这样的形式。

 

special5.png

 

那接着你又声明了一个变量,你说写成一个$b=2;

 

special6.png

 

相当于在内存中又开辟了一块空间,存储这个值是2,这样的形式,没问题以此类推。

 

那现在你来看,我们写成一个$i=1; $j=$i; 相当于什么呢?相当于把$i=1的值赋给了$j,那此时你echo $j; 结果是多少。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c
 
echo '<hr/>';
 
$i=1;
$j=$i;
echo $j;

 

special7.png

 

那结果不用说,是1。

 

那接着我在写上一下,$j=3; 我对$j重新赋值了,此时你echo $j;肯定是3,那我们$j是几啊,$j、$i还是1。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c
 
echo '<hr/>';
 
$i=1;
$j=$i;
echo $j;
echo '<br/>';
$j=3;
echo $j,'<br/>';
echo $i;
echo '<hr/>';

 

special8.png

 

$i还是1并没有影响到$i。

 

special9.png

 

首先你看到了这一块,相当于是把这个值赋给了这个变量。

 

那接着我们在重新写一下,$i=1; $j=&$i; 在它前面如果有一个&符号,那代表什么呢,这叫做取地址符。什么叫取地址符呢?我们在图中给大家画一下。当然你怎么写的时候。

 

special90.png

 

你声明了一个变量,$i=1; 在内存中就有一块来保存这个值的,它指向了这块空间,值是一,那现在呢这当做你家的房间,房间大小1平米,每个房间都有一个门牌号。

 

special91.png

 

01当做你们的门牌号,这样的形式那接着再往下,你写成一个$j=&$i,相当于什么呢,相当于它们两个,指向了同一个房间,它是取的这个$i的地址,其实呢就相当于我找到了这个,门牌号了我也进到你家里去住了。它们两个指向的是同一块内存空间。

 

special92.png

 

那现在它们两个住在这一个房子了,房子大小是以平米,它们想要的大小也是1平米。那当通过某个人的努力,把这个房子变大了,变成了多少呢,假如说111,这样的情况,那现在你看到,它们两个想要的大小,是不是一样的也跟着变化呀,对吧。取地址相当于忒两个变量。

 

special93.png

 

互为别名,指向同一块地址,这样的情况那接着你看我把这个$i,变了变成111了对吧,这个$j肯定也会跟着变,这就是取地址,和赋值这样的一个区别。

 

首先来看一下,我写成一个echo $j; 不用说肯定是1,因为现在还没有变化呢。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c
 
echo '<hr/>';
 
$i=1;
$j=$i;
echo $j;
echo '<br/>';
$j=3;
echo $j,'<br/>';
echo $i;
echo '<hr/>';
 
$i=1;
//取地址符号
$j=&$i;
echo $j;

 

special94.png

 

它们两个指向同一个空间。再往下你说我这个$j比较努力把房间变大了,$j=22; 接着你说我在echo $j不用说是22,echo $i呢,对吧,它们两个记住指向的是一个房间,那$j把房间变大了echo $i;也跟着变大。

 

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c
 
echo '<hr/>';
 
$i=1;
$j=$i;
echo $j;
echo '<br/>';
$j=3;
echo $j,'<br/>';
echo $i;
echo '<hr/>';
 
$i=1;
//取地址符号
$j=&$i;
echo $j;
echo '<hr/>';
$j=22;
echo $j;
echo '<hr/>';
echo $i;

 

special95.png

 

想用这个大房间的效果,你看到也是22这样的形式。

 

好再往下它知道了没有问题,现在呢我们说假如说$i;不住了发现这个房间不合适了,它不想住了那现在它就可以去掉它,那注销这个变量我们可以通过php中的一个函数unset($var):注销变量,那销毁变量相当于什么呢?相当于这个变量。

 

special96.png

 

不在这了,它去掉了人没了但是房间在不在啊,在它想用的大小会受影响吗?不会这一点需要注意。接着你来看写上一个,unset($i); 注销掉之后,你再来输出echo $i;的时候,你就看不到任何值。

 

special97.png

 

它的值为null,但是我们在来看$j;有影响吗,我们来看echo $j;。

 

<?php
//可变变量的例子
$a='b';
$b='c';
$c='d';
echo $$$a;//$$b->$c
 
echo '<hr/>';
 
$i=1;
$j=$i;
echo $j;
echo '<br/>';
$j=3;
echo $j,'<br/>';
echo $i;
echo '<hr/>';
 
$i=1;
//取地址符号
$j=&$i;
echo $j;
echo '<hr/>';
$j=22;
echo $j;
echo '<hr/>';
echo $i;
echo '<hr/>';
//unset($var):注销变量
unset($i);
echo $i;
echo '<hr/>';
echo $j;

 

special98.png

 

它是不会受影响的,你会看到还是22,这样的一个情况所以说把它搞懂了之后呢,你的引用,引用代表取地址符,就很简单了。

 

那之后呢我们以后再学函数的时候,也会看到这种形式,传值和传引用的一个形式。所以呢在这搞清楚,下来之后等到学到函数的时候,传引用的时候就明白了是怎么回事了,这一点需要注意,这是两个特殊的情况。

在线留言

*将严格保护您的信息请放心填写

热门案例

更多 +

帮助中心

在线报名 联系我们

咨询电话(9:00-17:00)

0551-65571116
13225607766

在线客服

点击咨询

扫一扫咨询

移动端查看

在线咨询
手机请直接输入:如1860086xxxx
座机前加区号:如0105992xxxx
输入您的电话号码,点击通话,稍后您将接到我们的电话,该通话对您完全免费,请放心接听!
扫描二维码