PHP: Выражения в определениях
Мы уже знаем, что выражения можно составлять из нескольких операций. Но если записать все вычисление в одну длинную строку, код быстро становится трудным для чтения.
Например, вот такая запись работает:
<?php
$yuansCount = 50 * 1.25 * 6.91;
print_r($yuansCount); // => 431.875PHP легко вычислит это выражение. Но человеку читать такой код уже не так удобно. Сразу возникают вопросы:
- Что означает
1.25? - Что означает
6.91? - Где заканчивается один шаг вычисления и начинается следующий?
Чтобы сделать такие вычисления понятнее, переменные можно использовать внутри других выражений. Сначала программа сохраняет промежуточный результат в переменную, а затем подставляет значение этой переменной в следующее вычисление.
Переменные помогают разбивать сложные вычисления на понятные части и сохранять промежуточные результаты.
Конвертация валют через промежуточную валюту
Представим, что нужно перевести евро в юани, но напрямую такой курс нам недоступен. Тогда сделаем это в два шага: евро -> доллары -> юани. Так часто работают банки при оплате покупок за рубежом.
Шаг 1. Евро -> Доллары
Допустим, курс: 1 евро = 1.25 доллара. Хотим перевести 50 евро:
<?php
$dollarsPerEuro = 1.25;
$dollarsCount = 50 * $dollarsPerEuro;
print_r($dollarsCount); // => 62.5В этой строке 50 * $dollarsPerEuro является выражением, а $dollarsCount представляет собой переменную, в которую записывается результат. PHP сначала вычисляет выражение, а уже потом сохраняет результат в переменную.
Интерпретатору все равно, как записано выражение:
$dollarsCount = 62.5;или
$dollarsCount = 50 * $dollarsPerEuro;Результат будет один и тот же. Но для человека второй вариант полезнее: по имени $dollarsCount сразу видно, что на этом шаге мы получили сумму в долларах.
Шаг 2. Доллары -> Юани
Теперь переведем 50 евро в юани, используя доллар как промежуточную валюту. Допустим, курсы валют: 1 доллар = 6.91 юаней, 1 евро = 1.25 долларов.
<?php
$dollarsPerEuro = 1.25;
$yuansPerDollar = 6.91;
$dollarsCount = 50 * $dollarsPerEuro;
$yuansCount = $dollarsCount * $yuansPerDollar;
print_r($yuansCount);Этот код длиннее, чем одна строка 50 * 1.25 * 6.91, но читать его проще:
- видно, что
1.25это курс евро к доллару - видно, что
6.91это курс доллара к юаню - видно, что
$dollarsCountявляется промежуточным результатом
Особенно это станет заметно, если не возвращаться к коду хотя бы неделю. А теперь представьте что в проекте сотни тысяч строк кода. Если бы в таких проектах не было промежуточных переменных и вычислений, в них бы было невозможно разобраться.
Что нужно запомнить
- Если выражение получается слишком длинным, его лучше разбить на несколько шагов.
- Переменные помогают сохранять промежуточные результаты и делают вычисления понятнее.
- Когда переменная используется в выражении, PHP подставляет ее значение и продолжает вычисление.
Задание
Напишите программу, которая берёт исходное количество евро из переменной $eurosCount, переводит евро в доллары и выводит значение на экран. Затем программа полученное значение переводит в юани и выводит результат на новой строчке.
Пример вывода для 100 евро:
125
863.75Считаем, что:
- 1 евро = 1.25 долларов
- 1 доллар = 6.91 юаней
Полезное
Для перевода строчки можно использовать
\nмежду выводом долларов и юаней.
PHP: Выражения в определениях
Мы уже знаем, что выражения можно составлять из нескольких операций. Но если записать все вычисление в одну длинную строку, код быстро становится трудным для чтения.
Например, вот такая запись работает:
<?php
$yuansCount = 50 * 1.25 * 6.91;
print_r($yuansCount); // => 431.875PHP легко вычислит это выражение. Но человеку читать такой код уже не так удобно. Сразу возникают вопросы:
- Что означает
1.25? - Что означает
6.91? - Где заканчивается один шаг вычисления и начинается следующий?
Чтобы сделать такие вычисления понятнее, переменные можно использовать внутри других выражений. Сначала программа сохраняет промежуточный результат в переменную, а затем подставляет значение этой переменной в следующее вычисление.
Переменные помогают разбивать сложные вычисления на понятные части и сохранять промежуточные результаты.
Конвертация валют через промежуточную валюту
Представим, что нужно перевести евро в юани, но напрямую такой курс нам недоступен. Тогда сделаем это в два шага: евро -> доллары -> юани. Так часто работают банки при оплате покупок за рубежом.
Шаг 1. Евро -> Доллары
Допустим, курс: 1 евро = 1.25 доллара. Хотим перевести 50 евро:
<?php
$dollarsPerEuro = 1.25;
$dollarsCount = 50 * $dollarsPerEuro;
print_r($dollarsCount); // => 62.5В этой строке 50 * $dollarsPerEuro является выражением, а $dollarsCount представляет собой переменную, в которую записывается результат. PHP сначала вычисляет выражение, а уже потом сохраняет результат в переменную.
Интерпретатору все равно, как записано выражение:
$dollarsCount = 62.5;или
$dollarsCount = 50 * $dollarsPerEuro;Результат будет один и тот же. Но для человека второй вариант полезнее: по имени $dollarsCount сразу видно, что на этом шаге мы получили сумму в долларах.
Шаг 2. Доллары -> Юани
Теперь переведем 50 евро в юани, используя доллар как промежуточную валюту. Допустим, курсы валют: 1 доллар = 6.91 юаней, 1 евро = 1.25 долларов.
<?php
$dollarsPerEuro = 1.25;
$yuansPerDollar = 6.91;
$dollarsCount = 50 * $dollarsPerEuro;
$yuansCount = $dollarsCount * $yuansPerDollar;
print_r($yuansCount);Этот код длиннее, чем одна строка 50 * 1.25 * 6.91, но читать его проще:
- видно, что
1.25это курс евро к доллару - видно, что
6.91это курс доллара к юаню - видно, что
$dollarsCountявляется промежуточным результатом
Особенно это станет заметно, если не возвращаться к коду хотя бы неделю. А теперь представьте что в проекте сотни тысяч строк кода. Если бы в таких проектах не было промежуточных переменных и вычислений, в них бы было невозможно разобраться.
Что нужно запомнить
- Если выражение получается слишком длинным, его лучше разбить на несколько шагов.
- Переменные помогают сохранять промежуточные результаты и делают вычисления понятнее.
- Когда переменная используется в выражении, PHP подставляет ее значение и продолжает вычисление.
Задание
Напишите программу, которая берёт исходное количество евро из переменной $eurosCount, переводит евро в доллары и выводит значение на экран. Затем программа полученное значение переводит в юани и выводит результат на новой строчке.
Пример вывода для 100 евро:
125
863.75Считаем, что:
- 1 евро = 1.25 долларов
- 1 доллар = 6.91 юаней
Полезное
Для перевода строчки можно использовать
\nмежду выводом долларов и юаней.
Ваше упражнение проверяется по этим тестам
<?php
namespace HexletBasics\Variables\Expressions;
use HexletBasics\Exercise\TestCase;
class SolutionTest extends TestCase
{
public function test()
{
$expected = "125\n863.75";
$this->assertOutput($expected);
}
}Решение учителя откроется через:
20:00
