文档章节

PHP函数传值与传引用

botkenni
 botkenni
发布于 2016/11/07 11:08
字数 162
阅读 27
收藏 0

1. 函数参数为对象时,传递的是对象地址,并非对象的拷贝

class Person{
    public function __construct($name){
        $this->name = $name;
    }
}
$aman = new Person('man');
function change( $p){
    $p->name = 'lucy';
}
change($aman);
echo $aman->name; //lucy

2. 函数参数为对象以外的普通类型时,包括数组array(),传递拷贝(浅拷贝

例1

$stu = array(
    'name' => 'lilei',
    'sex' => 'male'
);
function foo($arr){
    $arr['name'] = 'hanmeimei';
    return $arr;
}

foo($stu);
print_r($a); 

结果

lilei

例2 对象数组作为参数

$people = array(
    
    'a' => new Person("aaaaa"),
    'b' => new Person("bbbbb"),
    );
function changeOne($arr){
    $arr['a']->name = 'lucy2';
}
changeOne($people);
var_dump($people);

结果

array(2) {
  ["a"]=>
  object(Person)#2 (1) {
    ["name"]=>
    string(5) "lucy2"
  }
  ["b"]=>
  object(Person)#3 (1) {
    ["name"]=>
    string(5) "bbbbb"
  }
}

© 著作权归作者所有

botkenni
粉丝 20
博文 429
码字总数 444521
作品 0
西城
程序员
私信 提问
PHP引用传值

php引用 . php中引用的用法: 变量的引用赋值: $a = &$b 函数调用时的引用参数传递 1) 早期php是在调用时通过&符号传递引用类型的变量, 比如: func(&$arg); 2) 后来, 函数的引用类型参数被规定...

oneboi
2016/10/13
11
0
PHP传值和传引用、传地址的区别是什么?

传值, 是把实参的值赋值给行参 那么对行参的修改, 不会影响实参的值 传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都 指向同一个对象 传...

morebetter1
2018/07/02
0
0
PHP-CPP Php::ByVal和Php::ByRef详解

理解Php::ByRef和Php::ByVal之前我们先来补充几个知识点(关于C语言): 指针:指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元, ...

王And木
2018/06/05
0
0
PHP少用 “&” 符号来“引用”传递(而非“值”传递)

不少文章说:PHP可用 “&” 符号(通过“引用”传递而非“值”传递),让函数可以return多个值。 其实,传个数组就搞定。你想传百个值也没问题。 对php而言,编译原理和C不同,直接传数组比“...

jsyang888
2013/02/24
1K
20
C++传值、传引用

C++传值、传引用 C++的函数参数传递方式,可以是传值方式,也可以是传引用方式。传值的本质是:形参是实参的一份复制。传引用的本质是:形参和实参是同一个东西。 传值和传引用,对大多数常见...

lovedan
2017/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS其他类型值转化为Boolean类型规则

本文转载于:专业的前端网站➤JS其他类型值转化为Boolean类型规则 由于最近在笔试的时候,发现好多关于其他类型转化为Boolean类型的题目,因此总结一下! 一、String类型转化为Boolean 1.转化...

前端老手
21分钟前
4
0
EurekaClient自动装配及启动流程解析

在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类EurekaDiscoveryClie...

Java学习录
27分钟前
5
0
析构函数是否必须为虚函数?为何?

在C++中,基类指针可以指向一个派生类的对象。如果基类的析构函数不是虚函数,当需要delete这个指向派生类的基类指针时,就只会调用基类的析构函数,而派生类的析构函数无法被调用。容易造成...

天王盖地虎626
27分钟前
4
0
【TencentOS tiny】深度源码分析(7)——事件

引言 大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xxx_flag))这样子做...

杰杰1号
31分钟前
6
0
聊聊nacos client的ServerHttpAgent

序 本文主要研究一下nacos client的ServerHttpAgent HttpAgent nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/http/HttpAgent.java public interface HttpAgent { ......

go4it
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部