php 中数组引用的问题

发布于 2024-12-16 16:19:36 字数 402 浏览 1 评论 0原文

我正在尝试运行以下代码:

$a = array('aa');

function my_func (& $m) {
    return $m;
}

$c = & my_func($a);
$c[] = 'bb';
var_dump($a);
echo '--------';
var_dump($c);

我的期望是 $a 和 $c 将具有相同的引用。但结果不同。

我得到的结果是:

array(1) { [0]=> string(2) "aa" } --------array(2) { [0]=> string(2) "aa" [1]=> string(2) "bb" } 

上面的代码有什么问题?

I am trying to run following code:

$a = array('aa');

function my_func (& $m) {
    return $m;
}

$c = & my_func($a);
$c[] = 'bb';
var_dump($a);
echo '--------';
var_dump($c);

My expectation were that $a and $c would have same reference. But the result is different.

Result i got was:

array(1) { [0]=> string(2) "aa" } --------array(2) { [0]=> string(2) "aa" [1]=> string(2) "bb" } 

What is wrong in above piece of code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆光下的微笑 2024-12-23 16:19:36

我认为您正在寻找的是函数 通过引用返回 (这与示例中的通过引用传递结合使用)。

这是一个示例:

function &my_func(&$m) {
    return $m;
}

$a = array('aa');
$c = &my_func($a);
$c[] = 'bb';

var_dump($a);
echo "---\n";
var_dump($c);

输出:

array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}
---
array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}

I think what you are looking for is function returning by reference (this in conjunction with passing by reference in your example).

Here is an example:

function &my_func(&$m) {
    return $m;
}

$a = array('aa');
$c = &my_func($a);
$c[] = 'bb';

var_dump($a);
echo "---\n";
var_dump($c);

Outputs:

array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}
---
array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文