繁体   English   中英

PHP函数-与以下示例进行比较

[英]PHP function - compare with the following examples

  1. 比较两个类似的例子,请告诉我为什么?
  2. 请清楚解释。

     function inc(&$value, $amount = 1) { $value = $value + $amount; echo $value; //21 } $val = 20; inc($val); echo "<br>$val"; //21 echo "<hr>"; function incSec(&$value, $amount = 1) { $value = $value + $amount; echo $value; //21 } incSec($valSec = 20); echo "<br>$valSec"; //20 

我正在尝试测试,但无法找到原因。

首先,您发布的第二个示例将以相反的方式输出:函数内部为“ 21”,主体为“ 20”-自己进行测试。

现在,对于感叹号...首先,增量量将始终为1,因为您没有向函数传递显式量。

在第一个示例中,您为变量分配了一个值,然后通过引用将该变量传递给函数,并在函数中增加了该值。 该函数将接收参数“ 20”,将其递增(默认)数量1,并输出结果-“ 21”。 函数返回后,该值(通过引用传递)现在增加-并打印另一个“ 21”。

在第二个示例中,将20分配给变量,然后将分配结果传递给函数。 结果将为20,但它将在内存中为其他位置。 从函数的角度来看,它仅接收值为20的by-ref参数,将其递增并打印结果-因此,您得到的值为“ 21”。 当函数返回时,您将打印变量的值(该变量的值从未传递给该函数(因此永不递增)),因此得到“ 20”的打印结果。

怀疑这些行出现错误:

incSec($valSec = 20); 

这不是将$ valSec传递给函数,而是将20的赋值结果传递给$ valSec(通常是成功的赋值)。 该结果的值为20(假设成功),但这不是变量,仅是结果。

您的incSec函数()定义为期望通过引用传递的变量,但是您只能引用变量,而不能引用结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM