Загрузка данных
Конечно! Вот весь PHP-код по шагам, начиная с создания героя и до финальной HTML-страницы.
Шаг 0. Создание героя
Создаем базовые переменные персонажа.
<?php
// === ТВОЙ ГЕРОЙ ===
$heroName = "Артрог";
$heroClass = "Воин";
$heroLevel = 5;
$heroHp = 120;
$heroGold = 350;
echo "Герой: $heroName\n";[span_1](start_span)[span_1](end_span)
echo "Класс: $heroClass\n";[span_2](start_span)[span_2](end_span)
echo "Уровень: $heroLevel\n";[span_3](start_span)[span_3](end_span)
echo "Здоровье: $heroHp\n";[span_4](start_span)[span_4](end_span)
echo "Золото: $heroGold\n";[span_5](start_span)[span_5](end_span)
Шаг 1. Инвентарь как индексированный массив
Добавляем простой список названий предметов.
// ... код героя из Шага 0 ...
// === ИНВЕНТАРЬ: список названий ===
$inventory = [
"Железный меч",
"Деревянный щит",
"Зелье здоровья",
"Кошель с золотом",
"Карта подземелья"
];
echo "Предметы в инвентаре:\n";[span_7](start_span)[span_7](end_span)
echo $inventory[0] . "\n";[span_8](start_span)[span_8](end_span)
echo $inventory[1] . "\n";[span_9](start_span)[span_9](end_span)
echo $inventory[2] . "\n";[span_10](start_span)[span_10](end_span)
echo "Всего предметов: " . count($inventory) . "\n";[span_11](start_span)[span_11](end_span)
Шаг 2. Один предмет как ассоциативный массив
Описываем один предмет подробно через ассоциативный массив (ключ \rightarrow значение).
// ... код героя и инвентаря ...
// === ОДИН ПРЕДМЕТ с характеристиками ===
$sword = [
'name' => 'Железный меч',
'type' => 'weapon',
'damage' => 15,
'price' => 120,
'weight' => 3.5,
'isEquipped'=> true,
];
echo "Название: " . $sword['name'] . "\n";[span_13](start_span)[span_13](end_span)
echo "Тип: " . $sword['type'] . "\n";[span_14](start_span)[span_14](end_span)
echo "Урон: " . $sword['damage'] . "\n";[span_15](start_span)[span_15](end_span)
echo "Цена: " . $sword['price'] . " золота\n";[span_16](start_span)[span_16](end_span)
echo "Вес: " . $sword['weight'] . " кг\n";[span_17](start_span)[span_17](end_span)
echo "Экипирован: " . ($sword['isEquipped'] ? 'да' : 'нет') . "\n";[span_18](start_span)[span_18](end_span)
Шаг 3. Полный инвентарь — массив массивов
Собираем весь инвентарь в виде массива, где каждый элемент — это отдельный предмет-массив.
$inventory = [
[
'name' => 'Железный меч',
'type' => 'weapon',
'damage' => 15,
'price' => 120,
'weight' => 3.5,
'isEquipped'=> true,
'rarity' => 'common',
],
[
'name' => 'Деревянный щит',
'type' => 'armor',
'damage' => 0,
'defense' => 8,
'price' => 80,
'weight' => 4.0,
'isEquipped'=> true,
'rarity' => 'common',
],
[
'name' => 'Зелье здоровья',
'type' => 'consumable',
'damage' => 0,
'heal' => 50,
'price' => 25,
'weight' => 0.3,
'isEquipped'=> false,
'rarity' => 'common',
],
[
'name' => 'Кольцо огня',
'type' => 'armor',
'damage' => 5,
'defense' => 2,
'price' => 500,
'weight' => 0.1,
'isEquipped'=> false,
'rarity' => 'rare',
],
[
'name' => 'Карта подземелья',
'type' => 'quest',
'damage' => 0,
'price' => 0,
'weight' => 0.1,
'isEquipped'=> false,
'rarity' => 'epic',
]
];
echo "Инвентарь создан. Предметов: " . count($inventory) . "\n";[span_20](start_span)[span_20](end_span)
echo "Первый предмет: " . $inventory[0]['name'] . "\n";[span_21](start_span)[span_21](end_span)
echo "Цена последнего: " . $inventory[4]['price'] . "\n";[span_22](start_span)[span_22](end_span)
Шаг 4. Перебор инвентаря через foreach
Выводим все предметы автоматически с помощью цикла.
// ... код героя и полного инвентаря ...
echo "=== ИНВЕНТАРЬ ГЕРОЯ ===\n\n";[span_24](start_span)[span_24](end_span)
foreach ($inventory as $item) {
echo "• " . $item['name'] . "\n";[span_25](start_span)[span_25](end_span)
echo " Тип: " . $item['type'] . "\n";[span_26](start_span)[span_26](end_span)
echo " Цена: " . $item['price'] . " золота\n";[span_27](start_span)[span_27](end_span)
echo " Вес: " . $item['weight'] . " кг\n";[span_28](start_span)[span_28](end_span)
echo " Редкость: " . $item['rarity'] . "\n";[span_29](start_span)[span_29](end_span)
echo "\n";[span_30](start_span)[span_30](end_span)
}
Шаг 5. foreach с ключом
Получаем не только сам предмет, но и его порядковый номер.
// ... предыдущий код ...
echo "=== ИНВЕНТАРЬ С НОМЕРАМИ ===\n\n";[span_32](start_span)[span_32](end_span)
foreach ($inventory as $index => $item) {
$number = $index + 1;
echo "[$number] " . $item['name'] . " (" . $item['rarity'] . ")\n";[span_33](start_span)[span_33](end_span)
}
Шаг 6. Фильтрация — только экипированные предметы
Используем условный оператор if для вывода исключительно надетых вещей.
// ... предыдущий код ...
echo "=== ЭКИПИРОВАННЫЕ ПРЕДМЕТЫ ===\n";[span_35](start_span)[span_35](end_span)
$equippedCount = 0;
foreach ($inventory as $item) {
if ($item['isEquipped'] === true) {
echo "✓ " . $item['name'] . "\n";[span_36](start_span)[span_36](end_span)
$equippedCount++;
}
}
echo "\nВсего экипировано: $equippedCount\n";[span_37](start_span)[span_37](end_span)
Шаг 7. Подсчёт статистики
Считаем общую стоимость, вес и количество предметов по категориям.
echo "=== СТАТИСТИКА ИНВЕНТАРЯ ===\n\n";[span_39](start_span)[span_39](end_span)
$totalPrice = 0;
$totalWeight = 0;
$types = [];
foreach ($inventory as $item) {
$totalPrice += $item['price'];
$totalWeight += $item['weight'];
$type = $item['type'];
if (!isset($types[$type])) {
$types[$type] = 0;
}
$types[$type]++;
}
echo "Предметов всего: " . count($inventory) . " \n";[span_40](start_span)[span_40](end_span)
echo "\nПо типам:\n";[span_41](start_span)[span_41](end_span)
foreach ($types as $type => $count) {
echo " • $type: $count шт.\n";[span_42](start_span)[span_42](end_span)
}
Шаг 8 и 9. HTML-разметка и итоговый файл
Финальный код страницы со стилями и выводом инвентаря в HTML:
<?php
$heroName = "Артрог";
$heroClass = "Воин";
$heroLevel = 5;
$heroHp = 120;
$heroGold = 350;
$inventory = [
[
'name' => 'Железный меч',
'type' => 'weapon',
'damage' => 15,
'price' => 120,
'weight' => 3.5,
'isEquipped'=> true,
'rarity' => 'common',
],
[
'name' => 'Деревянный щит',
'type' => 'armor',
'damage' => 0,
'defense' => 8,
'price' => 80,
'weight' => 4.0,
'isEquipped'=> true,
'rarity' => 'common',
],
[
'name' => 'Зелье здоровья',
'type' => 'consumable',
'damage' => 0,
'heal' => 50,
'price' => 25,
'weight' => 0.3,
'isEquipped'=> false,
'rarity' => 'common',
],
[
'name' => 'Кольцо огня',
'type' => 'armor',
'damage' => 5,
'defense' => 2,
'price' => 500,
'weight' => 0.1,
'isEquipped'=> false,
'rarity' => 'rare',
],
[
'name' => 'Карта подземелья',
'type' => 'quest',
'damage' => 0,
'price' => 0,
'weight' => 0.1,
'isEquipped'=> false,
'rarity' => 'epic',
]
];
$totalPrice = 0;
$totalWeight = 0;
$types = [];
foreach ($inventory as $item) {
$totalPrice += $item['price'];
$totalWeight += $item['weight'];
$type = $item['type'];
if (!isset($types[$type])) {
$types[$type] = 0;
}
$types[$type]++;
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Инвентарь - <?php echo $heroName ?></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="hero-card">
<h1><?php echo htmlspecialchars($heroName) ?></h1>
<p><b>Класс:</b> <?php echo $heroClass ?> | <b>Уровень:</b> <?php echo $heroLevel ?></p>
<p><b>Здоровье:</b> <?php echo $heroHp ?> | <b>Золото:</b> <?php echo $heroGold ?></p>
<h2>Инвентарь (<?php echo count($inventory) ?> предметов)</h2>
<?php foreach ($inventory as $item): ?>
<div class="item <?php echo $item['isEquipped'] ? 'equipped' : '' ?>">
<b class="rarity-<?php echo $item['rarity'] ?>">
<?php echo htmlspecialchars($item['name']) ?>
</b>
<br>
Тип: <?php echo $item['type'] ?> |
Цена: <?php echo $item['price'] ?> |
Вес: <?php echo $item['weight'] ?> кг
<?php if ($item['isEquipped']): ?>
<span style="color: #4ecca3;">✓ экипировано</span>
<?php endif; ?>
</div>
<?php endforeach; ?>
<div class="stats">
<b>Общая стоимость:</b> <?php echo $totalPrice ?> золота<br>
<b>Общий вес:</b> <?php echo round($totalWeight, 2) ?> кг
</div>
</div>
</body>
</html>