если на переменную ссылаются внутри функции, то что происходит

function a(&$c, &$d){
$c = &$d;
}

$a = 1;
$b = 2;

a($a, $b);
echo $a;

output равен 1, но не должен выводить 2, поскольку $ c ссылается на $ d. $ c и $ ссылаются на одно и то же значение, тогда $ c ссылается на значение $ d, которое ссылается на $ b, поэтому в конечном итоге $ a должно ссылаться на $ b, не так ли?

0

Решение

Для операции, которую вы ищете, вы должны удалить амперсанд и ссылку, используемые в функции a.

пример

function swap (&$one, &$two) {
$tmp = $one; // One is stored temporarily
$one = $two; // Two is stored in One
$two = $tmp; // Temporary data retrieved and stored in two
unset($tmp); // Temporary variable destroyed
}

// Set the variables
$a = 1;
$b = 2;

echo $a . " - " . $b . "<br />"; // See output as: 1 - 2
swap($a, $b);
echo $a . " - " . $b; // See output as: 2 - 1
0

Другие решения

в соответствии

$ c = &$ D;

$ a относится к адресу $ b, но не к $ b, тогда вы можете попробовать это:

<?php
function foo(&$c, &$d){
$c = $d;
}

$a = 1;
$b = 2;

foo($a, $b);
echo $a;
?>
0

По вопросам рекламы [email protected]