В PHP, как и в жизни, вещи не всегда такие, какими кажутся на первый взгляд. Строка может вести себя как число, а число — как логическое значение. Этот процесс называется приведением типов. В этом тренажере мы разберемся, как явно и неявно менять "личность" переменных. Вы научитесь превращать строки в числа, числа в строки, и поймете, что PHP считает "правдой" (truthy), а что "ложью" (falsy). Эти навыки критически важны для написания гибкого и предсказуемого кода, особенно при работе с данными из форм или баз данных. Задания выстроены от простого знакомства с синтаксисом до анализа неявных преобразований.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Явное приведение к целому числу
В переменной хранится число в виде строки. Чтобы выполнять с ним математические операции, его необходимо преобразовать в целочисленный тип (integer). Используйте оператор явного приведения типа, чтобы выполнить это преобразование.
<?php
$string_number = "123";
// Преобразуйте строку в число
$integer_number = input1S$string_number;
var_dump($integer_number);
?>Результат приведения нечисловой строки
Не всегда строки содержат только цифры. Предскажите, какое значение будет получено, если попытаться привести к целому числу строку, которая не начинается с цифр. Впишите результат выполнения кода в поле ответа.
<?php
$text = "Hello World";
$number = (int)$text;
echo $number;
?>Приведение строки, начинающейся с числа
А что, если строка содержит и цифры, и текст? PHP пытается быть "умным" и извлечь число из начала строки. Определите, что выведет код после такого преобразования, и выберите правильный вариант.
<?php
$value = "10 маленьких негритят";
$count = (int)$value;
echo $count;
?>Исправьте ошибку в синтаксисе приведения
В коде допущена распространенная ошибка, которую делают новички, пришедшие из других языков. Вместо оператора приведения используется несуществующая функция. Найдите и исправьте строку с ошибкой.
<?php$price_string = "199.99";// Нужно получить целую часть цены$price_int = int($price_string);echo "Целая цена: " . $price_int;?>Истина или ложь?
В логических операциях PHP неявно приводит значения к булеву типу (`true` или `false`). Сопоставьте значения из левого столбца с их логическим эквивалентом из правого столбца, чтобы понять, что является "истиной", а что "ложью".
Приведение типов для корзины магазина
Представьте, что вы получаете данные о товаре из веб-формы. Все они приходят в виде строк. Чтобы правильно рассчитать общую стоимость и проверить статус товара, приведите переменные к нужным типам, перетащив операторы из банка.
<?php
// Данные, полученные из формы
$quantity_str = "3";
$price_str = "150.75";
$is_available_str = "1";
// Приведите типы для корректных вычислений
$quantity = input1S $quantity_str;
$price = input2S $price_str;
$is_available = input3S $is_available_str;
if ($is_available && $quantity > 0) {
$total = $quantity * $price;
echo "Общая стоимость: " . $total;
} else {
echo "Товар недоступен";
}
?>Классификация результатов приведения
Разные типы данных по-разному ведут себя при приведении к `float` (числу с плавающей точкой). Распределите значения из общего списка по двум категориям: те, что превратятся в 0.0, и те, что дадут ненулевой результат.
Неявное приведение (Type Juggling)
PHP часто выполняет приведение типов автоматически ("жонглирует" типами), когда переменные разных типов участвуют в одной операции. Предскажите результат сложения числа и строки, содержащей число. Введите в поле ответа и тип, и значение результата через пробел.
<?php
$string_val = "2 апельсина";
$int_val = 10;
$result = $int_val + $string_val;
echo gettype($result) . " " . $result;
?>