PHP: Аргументы как выражения
Рассмотрим код из предыдущего урока:
<?php
$result = round(10.25); // 10
Функция round()
вызывается с аргументом 10.25
.
Мы выяснили, что выражения превращаются в значения. То есть с точки зрения PHP, значения и выражения — это что-то схожее. Поэтому любые значения в программе технически можно заменить выражениями.
При вызове функции можно передать в неё аргументом выражение:
<?php
$result = round(8 + 2.25); // 10
Результат будет таким же, как в первом примере, потому что выражение 8 + 2.25
превратится в значение 10.25
, и с таким аргументом произойдет вызов round()
.
Более того, можно использовать переменные вперемешку со значениями и другими выражениями:
<?php
$number = 1.25;
$result = round($number + 7 + 2); // 10
Естественно, это работает не только с числами, а с любыми значениями и выражениями. Например, со строками.
Напомним, что в составе PHP есть функция ucfirst()
, которая принимает строку и возвращает на её основе новую строку, где первая буква превращена в заглавную. Вот простой вызов:
<?php
$result = ucfirst('dragon'); // 'Dragon'
А вот вызов, где в качестве единственного аргумента идёт целое выражение:
<?php
$result = ucfirst('dra' . 'gon'); // 'Dragon'
Результат будет тем же: в $result
запишется строка 'Dragon'
, потому что выражение 'dra' . 'gon'
превратится в значение 'dragon'
, и с таким аргументом произойдет вызов ucfirst()
.
Давайте подытожим. Взгляните на несколько примеров из текущего урока:
<?php
// простые вызовы
$result = round(10.25); // 10
$result = ucfirst('dragon'); // 'Dragon'
// выражения в аргументах
$result = round(8 + 2.25); // 10
$result = ucfirst('dra' . 'gon'); // 'Dragon'
// выражения с переменными в аргументах
$number = 1.25;
$result = round($number + 7 + 2); // 10
$text = 'dr';
$result = ucfirst($text . 'ag' . 'on'); // 'Dragon'
Заметьте схожесть: во всех вызовах в функции передаётся какая-то информация, но иногда это простое, «готовое» значение (10.25
, 'dragon'
), а иногда составное выражение — «неготовое» значение (8 + 2.25
, $number + 7 + 2
, $text . 'ag' . 'on'
и т.д.). При этом во всех примерах передаётся один аргумент. Когда аргументов несколько, они обязательно разделяются запятыми.
Задание
Вам доступна функция calculateDistanceBetweenTowns()
. Она принимает один аргумент, в котором должны содержаться названия двух городов через дефис. В ответ она возвращает расстояние между этими городами. Вот пример использования:
<?php
$distance = calculateDistanceBetweenTowns('Lannisport-Bayasabhad');
Напишите программу, которая использует функцию calculateDistanceBetweenTowns()
и выводит на экран расстояние между городами, записанными в переменные $from
и $to
.