关于php的引用,怎么理解。。

QYworld 2006-09-21 12:39:38
function pageDocumentEdit(&$html)
{
global $_DOCMAN;

$tpl = &new DOCMAN_Theme();
// Assign values to the Savant instance.
$tpl->assignRef('html', $html);
// load a filter to trim whitespace
$tpl->loadFilter('trimwhitespace');
// Display a template using the assigned values.
$tpl->display('page_docedit.tpl.php');
}


function pageDocumentEdit(&$html) 这句中的引用,怎么理解?

...全文
463 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2006-09-26
  • 打赏
  • 举报
回复
引用就是指针。当初有个人开发了一个叫java的软件,以除掉了指针做为卖点。最后发现指针是必不可少的,又不好意思拉下面子改回去,于是换了个名字和写法叫引用。虽然程序变得比指针更容易出错和难理解,但流行就是一切,于是现在指针都变成引用了。
--------------------------------------------------------
引用不是来自java,
c++至少从blorand c++ 3.0 的时候就有引用了(应该更早)
Gdj 2006-09-26
  • 打赏
  • 举报
回复
void *p=a;
unset(p)的话a是不会unset的好不好。指针只不过功能比引用强大一些。
引用就是指针的一部分功能拆出来的。
Meteorlet 2006-09-26
  • 打赏
  • 举报
回复
不会用引用就别用,Zend会优化的
peterdoo 2006-09-26
  • 打赏
  • 举报
回复
或许有点像soft link
xulxqqqq 2006-09-26
  • 打赏
  • 举报
回复
当C里的地址传递理解
QYworld 2006-09-25
  • 打赏
  • 举报
回复
楼上,解释下吧?
avalonBBS 2006-09-24
  • 打赏
  • 举报
回复

C++里面也有引用啊 @.@
PleaseDoTellMeWhy 2006-09-24
  • 打赏
  • 举报
回复
A--->B--->V
A-------->V
GaoXX 2006-09-23
  • 打赏
  • 举报
回复
function &pageDocumentEdit($html)

怎么理解?

an9ryfr09 2006-09-23
  • 打赏
  • 举报
回复
【quote】引用就是指针。【/quote】

php中的引用跟c++的指针还是不同的。

<?php
$a = 1;
$b =& $a;
unset($a);
?>

不会 unset $b,只是 $a。
如果是c++的指针的话,就会把$b也unset。



【quote】function &pageDocumentEdit($html)【/quote】

假如函数原型为
function &pageDocumentEdit($html){
$html .= 'abc';
return $html;
}

$a = &pageDocumentEdit($html);
这个可以理解为:给$a起个别名,$a的别名就是pageDocumentEdit($html);
tony-杨 2006-09-23
  • 打赏
  • 举报
回复
~~~做个记号
QYworld 2006-09-22
  • 打赏
  • 举报
回复
function &pageDocumentEdit($html)

怎么理解?
peterdoo 2006-09-22
  • 打赏
  • 举报
回复
"引用就是指针。"?!
No
php中的引用可不是c或c++中的指针
aday 2006-09-21
  • 打赏
  • 举报
回复
$html这个变量的值会被返回
Gdj 2006-09-21
  • 打赏
  • 举报
回复
引用就是指针。当初有个人开发了一个叫java的软件,以除掉了指针做为卖点。最后发现指针是必不可少的,又不好意思拉下面子改回去,于是换了个名字和写法叫引用。虽然程序变得比指针更容易出错和难理解,但流行就是一切,于是现在指针都变成引用了。
an9ryfr09 2006-09-21
  • 打赏
  • 举报
回复
你不用去记那些复杂的概念,就记得php里面的引用就是起个别名。而不是c++的指针!

$a = &$b;
只是给$a起了个别名,无论if($a == $b) or if($a === $b) or 他们在内存中储存的地址都是一样的。

在函数内如你的pageDocumentEdit(&$html)中,$html这个变量被传进去后进行的一切运算都会另$html的值改变。

这样做的话你可以不用返回一个值了。比如

pageDocumentEdit( &$html ){
$html.=$html."ef";
}

$html = "abcd";
pageDocumentEdit( $html );
echo $html;

-----------------------------------------------------------
输出:abcdef,而函数里面不需要你return $html另函数返回一个字符串来赋给某个变量了


这样做的好处:我们可以不必为了一个变量而创建多个副本来占用系统资源。
QYworld 2006-09-21
  • 打赏
  • 举报
回复
如果是这种写法的引用呢:怎么理解?

function &pageDocumentEdit($html)

怎么理解?
ClintNorthwood 2006-09-21
  • 打赏
  • 举报
回复
当一个方法需要一个参数时,它会说:我需要一个车

值类型:会将一个真正的车传给这个方法.

引用类型:会告诉这个方法这量车在哪里,而并不真正的将一个车传给这个方法.
QYworld 2006-09-21
  • 打赏
  • 举报
回复
楼上广告?!
peterdoo 2006-09-21
  • 打赏
  • 举报
回复
手册中的一段话:

“new”默认并不返回引用,而返回一个拷贝。

注: 在返回拷贝而不是引用中并没有性能上的损失(因为 PHP 4 及以上版本使用了引用计数)。相反更多情况下工作于拷贝而不是引用上更好,因为建立引用需要一些时间而建立拷贝实际上不花时间(除非它们都不是大的数组或对象,而其中之一跟着另一个变,那使用引用来同时修改它们会更聪明一些)。
加载更多回复(4)

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧