PHP输出(函数交换)

时间:2014-05-05 10:33:42

标签: php

有人可以试着解释一下为什么这段代码的输出是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

1 个答案:

答案 0 :(得分:0)

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

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

<?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";
?>

希望这个解释有所帮助。