Приведение типов

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В PHP, как и в жизни, вещи не всегда такие, какими кажутся на первый взгляд. Строка может вести себя как число, а число — как логическое значение. Этот процесс называется приведением типов. В этом тренажере мы разберемся, как явно и неявно менять "личность" переменных. Вы научитесь превращать строки в числа, числа в строки, и поймете, что PHP считает "правдой" (truthy), а что "ложью" (falsy). Эти навыки критически важны для написания гибкого и предсказуемого кода, особенно при работе с данными из форм или баз данных. Задания выстроены от простого знакомства с синтаксисом до анализа неявных преобразований.

Список тем

Явное приведение к целому числу

id: 38919_task_replace_1

В переменной хранится число в виде строки. Чтобы выполнять с ним математические операции, его необходимо преобразовать в целочисленный тип (integer). Используйте оператор явного приведения типа, чтобы выполнить это преобразование.

Заполните пропуски
<?php
$string_number = "123";

// Преобразуйте строку в число
$integer_number = input1S$string_number;

var_dump($integer_number);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Результат приведения нечисловой строки

id: 38919_task_give_result_1

Не всегда строки содержат только цифры. Предскажите, какое значение будет получено, если попытаться привести к целому числу строку, которая не начинается с цифр. Впишите результат выполнения кода в поле ответа.

Что должно получиться?
<?php
$text = "Hello World";
$number = (int)$text;

echo $number;
?>
Сообщения
Проверить
Показать подсказку

Приведение строки, начинающейся с числа

id: 38919_task_predict_result_1

А что, если строка содержит и цифры, и текст? PHP пытается быть "умным" и извлечь число из начала строки. Определите, что выведет код после такого преобразования, и выберите правильный вариант.

Выберите правильный вариант ответа
<?php
$value = "10 маленьких негритят";
$count = (int)$value;

echo $count;
?>
Сообщения
Проверить
Показать подсказку

Исправьте ошибку в синтаксисе приведения

id: 38919_task_error_1

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

Найдите ошибку и исправьте
<?php
$price_string = "199.99";
// Нужно получить целую часть цены
$price_int = int($price_string);
echo "Целая цена: " . $price_int;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Истина или ложь?

id: 38919_task_compare_1

В логических операциях PHP неявно приводит значения к булеву типу (`true` или `false`). Сопоставьте значения из левого столбца с их логическим эквивалентом из правого столбца, чтобы понять, что является "истиной", а что "ложью".

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Значение `0` (число)
Значение `"Hello"` (непустая строка)
Значение `[]` (пустой массив)
Значение `-1` (отрицательное число)
Значение `"0"` (строка с нулём)
Превратится в `true`
Превратится в `false`
Превратится в `true`
Превратится в `false`
Превратится в `false`
Сообщения
Проверить
Показать подсказку

Приведение типов для корзины магазина

id: 38919_task_bank_fill_1

Представьте, что вы получаете данные о товаре из веб-формы. Все они приходят в виде строк. Чтобы правильно рассчитать общую стоимость и проверить статус товара, приведите переменные к нужным типам, перетащив операторы из банка.

Нужно правильно расставить в пропуски предложенные варианты
<?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 "Товар недоступен";
}
?>
(int)
(float)
(bool)
(string)
(array)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Классификация результатов приведения

id: 38919_task_sort_1

Разные типы данных по-разному ведут себя при приведении к `float` (числу с плавающей точкой). Распределите значения из общего списка по двум категориям: те, что превратятся в 0.0, и те, что дадут ненулевой результат.

Перетяните элементы в соответствующие блоки
Превратится в 0.0
Превратится в ненулевое число
true
false
null
"1.5e2"
"some text"
"0"
Сообщения
Проверить
Показать подсказку

Неявное приведение (Type Juggling)

id: 38919_task_give_result_2

PHP часто выполняет приведение типов автоматически ("жонглирует" типами), когда переменные разных типов участвуют в одной операции. Предскажите результат сложения числа и строки, содержащей число. Введите в поле ответа и тип, и значение результата через пробел.

Что должно получиться?
<?php
$string_val = "2 апельсина";
$int_val = 10;

$result = $int_val + $string_val;

echo gettype($result) . " " . $result;
?>
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру