通过引用分配的意义何在?
这个问题在这里已经有了答案:
这里有一些例子:
为非常长的变量制作别名
$config = array(
'developers' => => array(
'emails' => array()
),
);
$dev_emails = &$config['developers']['emails'];
$dev_emails[] = 'email1@tld.com';
$dev_emails[] = 'email2@tld.com';
$dev_emails[] = 'email3@tld.com';
用不同的名称命名单个值
$result_count = mysql_num_rows();
$table_rows = &$number_of_results;
尽早分配数组项目
$post = $_POST;
$time = time();
$article = array(
'article_contents' => &$post['contents'],
'article_title' => &$post['title'],
'article_tags' => &$post['tags'],
'insert_time' => &$time
);
if (array_filter($article) < 3) {
throw new Exception("Required fields are blank");
}
$post['contents'] = striptags($post['contents']);
# imaginary model
# article::insert($article);
^即使对我来说,这似乎也是不切实际的,但我知道这对我有用很多次
保存内存? (只是一个理论)
还有更多的应用程序只会在你编码时出现,你会注意到在你已经编码的时候它的用处
有一段时间,通过避免复制长字符串可以节省内存。 但现代版本的PHP使用copy-on-write,所以这不是一个问题。
也就是说,复制写入意味着如果您分配$a = $b
,它实际上并没有使用更多的内存。 $a
内部指向$b
指向的内存中的相同内容。 但他们不应该像参考一样链接。 所以如果你修改$b
,那么PHP在这时就会使$a
成为原始值$b
$a
一个实体副本。 如果您修改$a
,那么它会为其新值获取自己的内存空间。
副作用仍然有用。
例如,在使用foreach时:
$a = array(1, 2, 3);
foreach ($a as $value) {
$value *= 2; // does not change contents of $a
}
foreach ($a as &$value) {
$value *= 2; // changes contents of $a
}
或者当传递函数参数时,并且您希望该函数修改参数的值。
链接地址: http://www.djcxy.com/p/57595.html