проблема со ссылкой на массив в php - PullRequest
2 голосов
/ 15 ноября 2011

Я пытаюсь запустить следующий код:

$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" } 

Что не так в приведенном выше фрагменте кода?

1 Ответ

4 голосов
/ 15 ноября 2011

Я думаю, что вы ищете функцию , возвращающуюся по ссылке (это в сочетании с передачей по ссылке в вашем примере).

Вот пример:

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"
}
...