我正在学习php,我必须解决一个练习,它是关于在php中通过引用传递值。我必须证明输出的正确性,我希望你们纠正我的答案。
我提交的代码下面有两个函数和四个变量,我们通过引用将值从SecondFunction传递给FirstFunction。
有五个答案或输出,练习是获得正确的输出并解释和证明答案。
非常感谢您。
<?php
function FirstFunktion(&$param){
$param = $param * 2;
}
function SecondFunktion($param){
$param = $param / 2;
}
$var1 = 10;
$var2 = 20;
$var3 = 30;
$var4 = 0;
$var4 = &$var1;
echo "var4: $var4<br />"; // output: var4: 10
FirstFunktion($var4);
echo "var1: $var1<br />"; // output: var1: 20
if ($var4 > $var2){
$var4 = $var2;
}else{
$var4 = &$var3;
}
SecondFunktion($var4);
echo "var4: $var4<br />"; // output: var4: 30
FirstFunktion($var3);
echo "var1: $var1<br />"; // output: var1: 20
echo "var2: $var2<br />"; // output: var2: 20
?>
我的答案
输出:var4:10在这里我们有值10,因为我们得到了 $ var1 = 10通过将值传递给引用$ var4 =&$ var1
输出:var1:20在这里,我们通过FirstFunction运行$ var4 将$ var4的值乘以10 * 2,然后输出$ var1,该值是 $ var1和$ var4相同
输出:var4:30这里有一个if,如果不正确,则输出 否则$ var3和$ var4现在具有相同的值30 然后我们通过SecondFunction 30/2 = 15运行$ var4将会是 通过FirstFunction 15 * 2 = 30自动更改最终结果 是30
输出:var1:20这很棘手,我们运行FirstFunktion($ var3)但有 对$ var1没有影响($ var1保持不变,没有得到 $ var3和$ var4)
输出:var2:20此处$ var2始终相同,没有任何结果 我们初始化$ var2 = 20
答案 0 :(得分:0)
您的答案是正确的。但是,在这种特定情况下,如果不通过引用传递就没有关系。
您的答案是正确的。在这里,因为$ var4是对$ var1的引用,所以后者发生的任何事情都会影响前者。
我认为您的答案不正确。 $ var4之所以为30的原因是,它被赋予了$ var3的值(因为if失败了)。 SecondFunktion是一个红色鲱鱼,它对馈入的值没有任何作用(因为该值不是通过引用馈入的。)
这是一个很好的选择。您的答案是正确的,但该课程试图教给您的内容如下:
<?php
$var_parent = "parent";
$var_child = &$var_parent;
var_dump($var_child); //will output parent
$var_grandparent = "grandparent";
$var_parent = &$var_grandparent;
var_dump($var_child); //will still output parent even tho $var_parent has changed
答案 1 :(得分:0)
我想按以下步骤更正您的第三个答案,
输出:var4:30此处有一个if,如果不正确,则输出为$ var3和$ var4现在具有相同的值30然后我们通过SecondFunction运行$ var4,但这是按值调用,因此值不会改变。