Загрузка данных


Конечно! Вот весь 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>