Можно ли передать переменную, хранящуюся в массиве, по ссылке в PHP? - PullRequest
1 голос
/ 29 июня 2010

Если я хочу, чтобы 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 голосов
/ 29 июня 2010

Вы можете передавать переменные только по ссылке, поэтому

myFunction(array()) 

не будет работать ни в одном случае.

Я не уверен, что ты делаешь, но скажем

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

Тогда

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

Которого не существует.

Я не проверял это, но я не думаю, что это сработает так, как вы хотите, даже с глобальными переменными.

0 голосов
/ 29 июня 2010

это уродливый хак, но может сработать:

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

Но вы никогда не должны вводить такие побочные эффекты.

...