PHP输出(函数交换)

PHP输出(函数交换),php,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

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

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

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

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


希望这个解释有帮助。

欢迎来到stackoverflow。有什么问题吗?嗨!谢谢你的评论!很抱歉,这是我第一次来这里,我犯了一个错误。问题是为什么产量是2,12,5,25。谢谢你的回答!php中没有交换函数。可能是你自己的错!!!您在第二次调用中通过引用进行传递。首先,您的函数被称为swap,而它不交换任何东西(因此将其重命名为“calc”或其他名称)。其次,您的第二次调用使函数对$a表示尊敬。因此$x和$y指向同一个变量(即$a),实际上是$a。因此$a(以及$x和$y)在第一行得到+1,在第二行得到+2。你得到:$a=$a+1和$a=$a+2的结果是$a=5和5*5=25。因为你给了$a一个引用,你原来的变量也改变了(在5中)。谢谢!!你的解释!现在更清楚了
<?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";
?>