Как я уже говорил, я повторяю эту функцию 3 раза, просто заменив переменную $ newYorkWeatherSource, которая передается в приведенном выше примере. Любые идеи, как я мог бы использовать эту функцию 3 раза, но все же передать в другой URL, чтобы моя страница показывала погоду из 3 городов?
Может быть, я полностью упускаю суть вашего вопроса, но вы спрашиваете, как переименовать функцию и переменные? Потому что, если это так, это просто вопрос поиска и замены в первых нескольких строках функции ...
function get_current_weather($rss_url) {
// Get XML data from source
if (isset($rss_url)) {
$feed = file_get_contents($rss_url);
} else {
echo 'Feed not found. Check URL';
}
// ...
Просто замените функции, относящиеся к конкретному городу, одной из таких функций, начинающихся с этого, и вызывайте их три раза, по одному разу для каждого URL-адреса RSS-канала каждого конкретного города.
Из комментариев:
но мне просто интересно, что я буду делать с 3-мя переменными URL-адреса RSS, потому что я не могу заменить их все переименованными в $ rss_url, так как я буду просто перезаписывать их, пока в конечном итоге единственным URL-адресом не будет Париж
Я полагаю, что вы, возможно, страдаете от неправильного понимания области видимости переменных PHP. Давайте возьмем этот фрагмент в качестве примера:
function bark($dog) {
echo 'The dog says ', $dog, ".\n";
}
$cat = 'meow';
bark($cat);
Этот код будет выдавать The dog says meow.
Когда вы вызываете функцию bark
с переменной, PHP берет копию данных * и передает ее в функцию в качестве указанного имени переменной. в функции . Вам не нужно называть переменную одинаково как внутри, так и снаружи. Фактически, вы не можете ** даже увидеть переменные, определенные вне функции:
function i_see_you() {
echo 'The dog heard the cat say ', $cat, ".\n";
}
$cat = 'meow';
i_see_you();
Этот код будет выдавать The dog heard the cat say .
, так как $cat
здесь выходит за рамки.
Возвращаясь к проблеме, у нас еще есть три погодных URL.
$newYorkWeatherSource = 'http://weather.yahooapis.com/forecastrss?p=USNY0996&u=f';
$londonWeatherSource = 'http://weather.yahooapis.com/forecastrss?p=UKXX0085&u=c';
$parisWeatherSource = 'http://weather.yahooapis.com/forecastrss?p=FRXX0076&u=c';
Все, что вам нужно сделать, чтобы заставить вещи работать:
echo get_current_weather($newYorkWeatherSource);
echo get_current_weather($londonWeatherSource);
echo get_current_weather($parisWeatherSource);
Внутри функции правильная переменная с правильным именем будет иметь правильные данные, и правильная вещь произойдет.
*: PHP использует что-то, называемое «копирование при записи», что делает то, что, как вы думаете, может сделать. Совершенно безопасно передавать переменные, содержащие большие данные. Это не будет потреблять неожиданные объемы памяти. Там нет необходимости использовать ссылки. На самом деле, забудьте, что я когда-либо говорил о ссылках, они вам сейчас не нужны.
**: Можно увидеть переменные из глобальной области видимости, используя ключевое слово global
. Глобалы - плохая практика и приводят к спагетти-коду. Возможно, вы захотите узнать больше о области видимости переменных в PHP .