如何在PHP中通过引用传递值

时间:2019-04-01 09:56:59

标签: php

我正在学习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
?>

我的答案

  1. 输出:var4:10在这里我们有值10,因为我们得到了 $ var1 = 10通过将值传递给引用$ var4 =&$ var1

  2. 输出:var1:20在这里,我们通过FirstFunction运行$ var4 将$ var4的值乘以10 * 2,然后输出$ var1,该值是 $ var1和$ var4相同

  3. 输出:var4:30这里有一个if,如果不正确,则输出 否则$ var3和$ var4现在具有相同的值30 然后我们通过SecondFunction 30/2 = 15运行$ var4将会是 通过FirstFunction 15 * 2 = 30自动更改最终结果 是30

  4. 输出:var1:20这很棘手,我们运行FirstFunktion($ var3)但有 对$ var1没有影响($ var1保持不变,没有得到 $ var3和$ var4)

  5. 输出:var2:20此处$ var2始终相同,没有任何结果 我们初始化$ var2 = 20

  6. 时引用

2 个答案:

答案 0 :(得分:0)

  1. 您的答案是正确的。但是,在这种特定情况下,如果不通过引用传递就没有关系。

  2. 您的答案是正确的。在这里,因为$ var4是对$ var1的引用,所以后者发生的任何事情都会影响前者。

  3. 我认为您的答案不正确。 $ var4之所以为30的原因是,它被赋予了$ var3的值(因为if失败了)。 SecondFunktion是一个红色鲱鱼,它对馈入的值没有任何作用(因为该值不是通过引用馈入的。)

  4. 这是一个很好的选择。您的答案是正确的,但该课程试图教给您的内容如下:

<?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. 您的答案是正确的。第二个变量没有被触及。

答案 1 :(得分:0)

我想按以下步骤更正您的第三个答案,

输出:var4:30此处有一个if,如果不正确,则输出为$ var3和$ var4现在具有相同的值30然后我们通过SecondFunction运行$ var4,但这是按值调用,因此值不会改变。