Я написал функцию, которая должна взять некоторые переменные, а затем изменить значение этих переменных. Однако после запуска функции переменные остались неизменными. Затем я сделал несколько поисковых запросов и обнаружил, что вам нужно поставить &
перед именами переменных. Затем код сделал то, что я хотел. Однако я не понимаю, зачем вам нужно поставить &
. Есть ли другой способ выполнить то, что мне нужно? В основном меня путают с понятием прохождения по ссылке. Здесь начались мои проблемы, 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