PHP输出(函数交换)


PHP Output (function swap)

谁能解释一下为什么这段代码的输出是2,12;5、25 ?

<?php
function swap($x, $y){
  $x = $x + 1;
  $y = $y + 2;
  return $x * $y;
}
$a = 2;
$b = swap($a, $a);
print "$a, $b";
$b = swap(&$a, &$a);
print "$a, $b";
?>
输出:

2, 12
5, 25

以下是一些解释。第一个电话我想你已经明白了。我将在代码中解释第二次调用的结果。这里你是通过引用传递变量。

当通过引用调用时,传递对变量的引用,因此任何更改都会反映在原始变量中。

<?php
function swap($x, $y){
  //here your variable $a is 2
  $x = $x + 1;
  // added 1 to $a so $a is now 3 
  $y = $y + 2;
  //again added 2 to variable $a becomes 5
  return $x * $y; //returns 5*5=25
}
$a = 2;
$b = swap(&$a, &$a);
print "$a, $b";
?>