【发布时间】:2016-03-31 04:18:07
【问题描述】:
我写了一个函数,它应该接受一些变量,然后改变这些变量的值。但是,运行该函数后,变量保持不变。然后我做了一些谷歌搜索,发现你需要在变量名前面放一个&。然后代码做了我想做的事。但是,我不明白您为什么需要输入&。还有其他方法可以完成我需要做的事情吗?基本上我对通过引用传递的概念感到困惑。这就是我的麻烦开始的地方,大声笑:
到目前为止,在我学过的所有语言(python、java、ruby)中,函数将采用的参数将按照算法中的指示更改变量的值,而无需任何passing by reference,我认为'刚刚在 PHP 中发现。为什么 PHP 选择这样做?你能解释一下引用背后的逻辑吗?最后,网上有人说:不要使用引用?如果没有,我还能如何找到我的解决方案。然后在 PHP 中的引用也被弃用了……对不起,这是一个混乱。
我浏览了 PHP 手册以获取参考,但我发现它很难消化。
这是我添加了& 符号的一些代码:
<?php
$comments = "";
$airline_name = "United";
$flight_number = "262";
$departure_airport = "";
function airport(&$one, &$two, &$three, &$four) {
if ( !empty($one) || !empty($two) || !empty($three) ) {
$one = !empty($one) ? "Airline Name: $one<br>" :"Airline Name: PLEASE PROVIDE AIRLINE NAME<br>";
$two = !empty($two) ? "Flight Number: $two<br>" : "Flight Number: PLEASE PROVIDE FLIGHT NUMBER<br>";
$three = !empty($three) ? "Departure Airport: $three<br>" : "Departure Airport: PLEASE PROVIDE DEPARTURE AIRPORT<br>";
$four = !empty($four) ? "Comments: $four<br>" : "";
}
}
airport($airline_name,$flight_number,$departure_airport,$comments);
echo $airline_name,$flight_number,$departure_airport,$comments;
?>
【问题讨论】:
-
那是一种糟糕的编程习惯。传入值,获取新值。这样更易于维护和安全。
-
如果函数将新值作为数组返回,你可以这样做
list($var1,$var2) = myFunc() -
“在我目前所学的所有语言中,我从来不需要显式地为函数传递参数来修改变量。”那些是什么?
-
默认情况下,C++ 中的参数是按值传递的 -
void foo(int y);通过引用传递你使用void foo(int &y),或者通过指针传递你使用void foo(int *y)....还有另一种语言以同样的方式做这件事
标签: php pass-by-reference pass-by-value