php常量和变量之变量引用

变量引用

变量引用很多老师喜欢来用C语言的指针来去讲解。我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。

使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。

关于变量引用的知识点,请以我们的讲解为理解的基准!

我们来对比两段代码的执行结果:
第一段代码,没有任何区别。跟我们原有的PHP代码一模一样:

<?php

$fo = 5;
//$fo的值为5,将5赋值
$bar = $fo;
//$bar的值原来为5,现在将值改为6
$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为5
echo $fo.'<br />';

?>

第二段代码:

<?php

$fo = 5;
//注意,加上了一个&符哟
$bar = &$fo;

$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为6
echo $fo.'<br />';

?>

为什么两个结果都变成6了呢?

我经常跟大家这样来举例。我们可以这样来想象:一个变量名,对应了一个数据值。如下图:

2015-08-02_55bdc64daf9e3.png

而加上&(and 符后),把变量指向同一个存值空间了,如下图:

2015-08-02_55bdc68312f9b.png

也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。

举个不靠谱的例子,方便你来理解:
你家有只小狗,叫作旺财。又有一只小狗叫作狗蛋。有一天,你把狗蛋给吃了。把狗蛋这个名字给了旺财

那么,你不论是打狗蛋一下,还是打旺财一下都是打的同一条狗。


注:如果你理解、了解、熟悉C语言的指针。可自行用指针方式来理解,不在本文的讨论范围内。

继续学习
||
<?php $fo = 5; //注意,加上了一个&符哟 $bar = &$fo; $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为6 echo $fo.'<br />'; ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

高并发千万级数据库系统解决方案
  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
樊宇航 Tony

樊宇航 Tony

狗蛋做错了什么,你要吃它!

4年前    添加回复 4

回复
青草地

青草地

没人心疼旺财吗?狗蛋没了,旺财得挨两份打了。

4年前    添加回复 1

回复
世间始终你好

世间始终你好

哈哈 好搞笑

4年前    添加回复 1

回复
A00.Murphy Lee

A00.Murphy Lee

搞错了把,后声明的$bar 的值会影响前面的$fo变量值,而第一个无论改成什么都会和第二个值保持一样,不信你试试。老师说的也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。 不正确

9个月前    添加回复 0

回复
人生如歌

人生如歌

&取址

4年前    添加回复 0

回复
修

&取地址符。

4年前    添加回复 0

回复
Super man

Super man

什么狗蛋旺财的 本来挺明白的 看完这俩狗就懵了T,T

4年前    添加回复 0

回复
宏宏

宏宏

心疼狗蛋

4年前    添加回复 0

回复
点点

点点

心疼狗蛋

4年前    添加回复 0

回复
 o

o

qinshou

4年前    添加回复 0

回复

变量赋值的先后顺序

[最新 nearest 的回答]$a = &$b;此时,$a 不光赋了$b的值,还得到了$b在内存中的位置,所以,$a改变了,内存中此处的变量值也变了,$b也就变了。

时间:4年前

梨夜?

梨夜?

$fo = 5; $bar = &$fo;//在变量中加入&不论怎样赋值最初的$fo都为之后赋的值 $bar = 10;

7个月前 0

知否

知否

&(and 符后),把变量指向同一个存值空间了,不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。

1年前 0

知否

知否

变量引用:当变量引用时 使用了& 符号时

1年前 0

浮世绘梦

浮世绘梦

而加上&(and 符后),把变量指向同一个存值空间了,如下图

1年前 0

࿐

$fo = 5; //在变量$fo前加了一个&符,相当于将$bar变量和$fo变量指向了同一个存值空间 //其中一个变量的值发生变化,另外一个也随之发生变化 $bar = &$fo; $bar = 6;

1年前 0

山己几

山己几

123

2年前 0

秋城

秋城

''换行

2年前 0

无道

无道

$a = &$b; 这就意味着两个变量从此以后捆绑在了一起,不管它们其中的哪一个发生变化,另一个变量也会跟着变化 ;

2年前 0

妞妞

妞妞

加上&(and 符后),把变量指向同一个存值空间

2年前 0

简繁

简繁

&and似乎就是把自己的数值和变量名都给了$bar

3年前 0

Вечный миг

Вечный миг

加上&(and 符后),把变量指向同一个存值空间了

3年前 0

ʘᴗʘ

ʘᴗʘ

加上&(and 符后),把变量指向同一个存值空间了; 也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。

3年前 0

阿大

阿大

$fo = 5; //注意,加上了一个&符哟 $bar = &$fo;

4年前 0

吾生也有涯,而知也无涯

吾生也有涯,而知也无涯

加上&(and 符后),把变量指向同一个存值空间了; 也就是不论$fo或$bar的值如何发生变化,$fo变$bar也变,$bar发生变化,$fo也会发生变化。

4年前 0

陈不尚

陈不尚

指针分逻辑关系,若在引入指针的行前改变变量值,则不会产生影响,从而还是显示改变前的值

4年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~