如果我希望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);
有没有办法实现这个目标?
答案 0 :(得分:0)
这是一个丑陋的黑客,但可以工作:
global $$args['something'];
$$args['something'] = new SomeClass();
但你永远不应该引入这样的副作用。
答案 1 :(得分:0)
您只能通过引用传递变量,所以
myFunction(array())
在任何一种情况下都不起作用。
我不确定你在做什么,但是让我们说
$myVariable = 'Mary';
$array['something'] = $myVariable;
然后
$$array['something'] === $Mary
哪个不存在。
我没有对它进行测试,但我认为即使使用全局变量,它也会按照你想要的方式工作。