PHP: Явное преобразование типов

Преобразование типов — частая операция в веб-разработке. Для ее выполнения можно полагаться на слабую типизацию. Но во многих ситуациях лучше делать преобразование явно с помощью специального синтаксиса. Такой код понятнее и предсказуемее.

Пример явного преобразования типов:

<?php

// Примеры немного искусственные
// В реальности этот механизм становится полезен при использовании переменных
print_r((string) 5);
print_r((int) '345');

// Преобразование типов можно использовать внутри составных выражений
print_r('Это ' . ((string) 5)); // => 'Это 5'

Явное преобразование типа работает так: перед значением в скобках указывается желаемый тип. В результате значение справа преобразуется в значение другого типа, указанного слева в скобках. На текущий момент мы знакомы только с двумя типами, но преобразование работает для любого типа.

В более сложных ситуациях при использовании функций, которые будем проходить позже, встречаются множественные преобразования: (string) (5 + ((int) '4')). Порядок вычисления этого выражения следующий:

<?php

(int) '4';  // 4
5 + 4;      // 9
(string) 9; // '9'

Задание

Выведите на экран строку 2 times, полученную из числа 2.9 и строки times, используя преобразования типов и конкатенацию. Для этого нужно выполнить два преобразования: сначала в целое число, а затем в строку

Как с вами связаться? 🙃

Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник". Как правильно задать вопрос:

В моей среде код работает, а здесь нет 🤨

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно 🙄

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются

Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт

Loading...

Ваше упражнение проверяется по этим тестам

1<?php // phpcs:ignore PSR1.Files.SideEffects
2
3namespace HexletBasics\DataTypes\TypeConversion;
4
5use PHPUnit\Framework\TestCase;
6
7\HexletBasics\Functions\runScript();
8
9class SolutionTest extends TestCase
10{
11    public function test()
12    {
13        $expected = '2 times';
14        $this->expectOutputString($expected);
15        require 'index.php';
16    }
17}
18

Решение учителя откроется через:

20:00
waiting_clock