【问题标题】:Is it possible to pass a variable stored in an array by reference in PHP?是否可以在 PHP 中通过引用传递存储在数组中的变量?
【发布时间】:2011-03-09 16:49:38
【问题描述】:

如果我想让myFunction 获取$myVariable 并为其分配SomeClass 的实例,我知道我可以这样做:

class SomeClass { }

function myFunction(&$myVariable) {
    $myVariable = new SomeClass();
}

myFunction($myVariable);

var_dump($myVariable);

但是,我希望myFunction 能够像这样操作:

class SomeClass { }

function myFunction($args = array()) {
    if(isset($args['something'])) {
        $$args['something'] = new SomeClass();
    }
}

myFunction(array(
    'something' => $myVariable
));

var_dump($myVariable);

有什么办法可以做到吗?

【问题讨论】:

  • 请不要再让我头疼了。

标签: php pass-by-reference


【解决方案1】:

你只能通过引用传递变量,所以

myFunction(array()) 

在这两种情况下都不起作用。

我不确定你在做什么,但让我们说一下

$myVariable = 'Mary';
$array['something'] = $myVariable;

然后

$$array['something'] === $Mary

不存在的。

我还没有测试过它,但我认为它不会按照你想要的方式工作,即使使用全局变量。

【讨论】:

    【解决方案2】:

    这是一个丑陋的黑客,但可以工作:

     global $$args['something'];
     $$args['something'] = new SomeClass();
    

    但是你不应该引入这样的副作用。

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      相关资源
      最近更新 更多