PHP引用为何常被称作陷阱,使用需谨慎?

更新于
2026-09-23 03:04:45
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3159个文字,预计阅读时间需要13分钟。

PHP引用为何常被称作陷阱,使用需谨慎?

前言:去年我参加了许多次会議,其中八次会議中我进行了相关发言,其中我多次谈到了PHP的引用问题,因为很多人对它的理解存在偏差。

在深入讨论这个问题之前,我们先回顾一下。

前言

去年我参加了很多次会议,其中八次会议里我进行了相关发言,这其中我多次谈到了 PHP 的引用问题,因为很多人对它的理解有所偏差。在深入讨论这个问题之前,我们先回顾一下引用的基本概念,明确什么是“引用传递”。

在 PHP 中引用意味着用不同的名字访问同一个变量内容,不论你用哪个名字对变量做出了运算,其他名字访问的内容也将改变。

让我们通过代码来加深对此的理解。 首先我们写几个简单的语句,把一个变量赋值给另一个变量,并且改变另一个变量:

<?php $a = 23; $b = $a; $b = 42; var_dump($a); // int(23) var_dump($b); // int(42)

这个脚本显示 $a 值仍然为 23 ,而 $b 则等于 42 。出现这个情况的原因是我们得到的是一个拷贝(具体发生了什么稍后讲解。。。)现在我们使用引用来做同样的事情:

<?php $a = 23; $b = &$a; $b = 42; var_dump($a); // int(42) var_dump($b); // int(42) ?>

现在 $a 的值也改变成了 42 。 事实上,$a 和 $b 之间没有任何区别,它们都使用了同一个变量容器(又名: zval )。 将这两者分开的唯一方法是使用 unset() 函数销毁其中任何一个变量。

阅读全文

本文共计3159个文字,预计阅读时间需要13分钟。

PHP引用为何常被称作陷阱,使用需谨慎?

前言:去年我参加了许多次会議,其中八次会議中我进行了相关发言,其中我多次谈到了PHP的引用问题,因为很多人对它的理解存在偏差。

在深入讨论这个问题之前,我们先回顾一下。

前言

去年我参加了很多次会议,其中八次会议里我进行了相关发言,这其中我多次谈到了 PHP 的引用问题,因为很多人对它的理解有所偏差。在深入讨论这个问题之前,我们先回顾一下引用的基本概念,明确什么是“引用传递”。

在 PHP 中引用意味着用不同的名字访问同一个变量内容,不论你用哪个名字对变量做出了运算,其他名字访问的内容也将改变。

让我们通过代码来加深对此的理解。 首先我们写几个简单的语句,把一个变量赋值给另一个变量,并且改变另一个变量:

<?php $a = 23; $b = $a; $b = 42; var_dump($a); // int(23) var_dump($b); // int(42)

这个脚本显示 $a 值仍然为 23 ,而 $b 则等于 42 。出现这个情况的原因是我们得到的是一个拷贝(具体发生了什么稍后讲解。。。)现在我们使用引用来做同样的事情:

<?php $a = 23; $b = &$a; $b = 42; var_dump($a); // int(42) var_dump($b); // int(42) ?>

现在 $a 的值也改变成了 42 。 事实上,$a 和 $b 之间没有任何区别,它们都使用了同一个变量容器(又名: zval )。 将这两者分开的唯一方法是使用 unset() 函数销毁其中任何一个变量。

阅读全文