我寫了一個函數,該函數應該接受一些變量,然後更改這些變量的值。但是,運行該函數後,變量保持不變。然後我做了一些Google搜索,發現你需要在變量名前加上&
。代碼然後做了我想要的事情。但是,我不明白你爲什麼需要把&
。有沒有其他方法可以完成我需要做的事情?基本上我對通過引用的概念感到困惑。這是我的困境開始的地方,LOL:爲什麼在PHP中通過引用傳遞?
在迄今爲止我學到的所有語言(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;
?>
這是一個糟糕的編程習慣。傳遞值,獲得新值。這更可維護,更安全。 –
http://stackoverflow.com/questions/2157799/when-to-pass-by-reference-in-php --- http://stackoverflow.com/questions/11360810/php-pass-by-reference- confusion問題是,*爲什麼?* –
如果函數以數組形式返回新值,您可以執行'list($ var1,$ var2)= myFunc()' – SmokeyPHP