是否可以通过PHP中的引用传递存储在数组中的变量?

时间:2010-06-29 15:24:36

标签: php pass-by-reference

如果我希望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);

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

myFunction(array()) 

在任何一种情况下都不起作用。

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

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

然后

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

哪个不存在。

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