您好,欢迎访问一九零五行业门户网

PHP里的值传递与引用传递_PHP教程

php中存在着值传递和引用传递。后者需要使用地址符&来标识变量。使用赋值操作举例说明如下:
1、值传递
1)基本数据类型:
01
注:这里使用了$b = $a语句,是将$a的值赋给了$b。 即此时赋的值是1。
执行语句$b += 2后:
所以,$b变成了3,但是$a的值并没有改变。
2)引用数据类型
person类如下:
01
class person {
02
    private $_name;
03
04
    public function setname($name) {
05
        $this->_name = $name;
06
    }
07
08
    public function getname() {
09
        return $this->_name;
10
    }
11
12
    public function tostring() {
13
        return name is .$this->_name;
14
    }
15
}
初始化两个person类对象,并设置属性:
1
$p1 = new person();
2
$p1->setname(person1);
3
$p2 = new person();
4
$p2->setname(person2);
执行以下操作:
1
$p3 = $p1;
测试:
1
echo \$p1's .$p1->tostring()..
;
2
echo \$p3's .$p3->tostring()..
;
3
4
/* 输出:
5
    $p1's name is person1.
6
    $p3's name is person1.
7
*/
注: 对于 $p3 = $p1语句,     即此时赋的值是0x000a。  即$p1和$p3都引用了同一个对象。
2、引用传递
1)基本数据类型
01
注:这里使用$b = &$a语句,进行了引用传递:   即此时赋的值是0x0001。
所以对$b += 2后,
所以$a和$b的值都是3。
2)引用数据类型
若执行的是以下操作来替代之前的$p3 = $p1
1
$p3 = &$p1;
再执行以下操作:
1
$p3 = $p2;
测试结果如下:
1
echo \$p1's .$p1->tostring()..
;
2
echo \$p3's .$p3->tostring()..
;
3
4
/* 输出:
5
    $p1's name is person2.
6
    $p3's name is person2.
7
*/
注:对已打印出$p3的结果信息是很明了的,因为执行了$p3 = $p2语句,但是为什么打印$p1的结果信息与之前相比不一样了呢?
是因为$p3 = &$p1语句执行后,  即此时赋的值是0x0001。
紧接着执行$p3 = $p2语句后
所以才会打印出如上的结果信息,这便是地址符&在起作用。
完整代码如下:
1)引用数据类型
01
_name = $name;
07
        }
08
09
        public function getname() {
10
            return $this->_name;
11
        }
12
13
        public function tostring() {
14
            return name is .$this->_name;
15
        }
16
    }
17
18
    $p1 = new person();
19
    $p1->setname(person1);
20
    $p2 = new person();
21
    $p2->setname(person2);
22
23
    $p3 = $p1;
24
    // $p3 = &$p1;
25
    // $p3 = $p2;
26
    echo \$p1's .$p1->tostring()..
;
27
    echo \$p3's .$p3->tostring()..
;
28
?>
2)基本数据类型
1
结束语:对于值传递与引用传递在方法/函数参数的传递上情况下,与赋值操作情况是类似的。
http://www.bkjia.com/phpjc/478049.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/478049.htmltecharticlephp中存在着值传递和引用传递。后者需要使用地址符来标识变量。使用赋值操作举例说明如下: 1、值传递 1)基本数据类型: 01 ?php 02 $a...
其它类似信息

推荐信息