PHP выводит несколько <img> из папки

Итак, у меня в основном есть этот код:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    $img = "<img src='img/".$lang."/1.png' />";
?>

[some useless code here...]

<div class = "col ">
    <?php echo $img; ?>
    <p>Here some text under the img</p>
</div>

В зависимости от выбранного языка будет отображаться другое изображение. Как видите, изображение хранится в папке с названием языка. Например, если вы выберете «en» для английского языка, изображение будет отображаться как /img/en/1.png.

Моя проблема в том, что в этих папках есть несколько изображений (1.png, 2.png ... 5.png). Вместо того, чтобы писать это:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    $img = "<img src='img/".$lang."/1.png' />";
    $img = "<img src='img/".$lang."/2.png' />";
    $img = "<img src='img/".$lang."/3.png' />";
    $img = "<img src='img/".$lang."/4.png' />";
    $img = "<img src='img/".$lang."/5.png' />";

?>

Есть ли способ повторить эти изображения с помощью петли? Я новичок в PHP и не уверен, что мне писать.

Спасибо.

повторить эти картинки петлей? ... Конечно, именно поэтому циклы существуют ... взгляните на цикл for ... кстати: ваш $langArray не имеет никакого смысла в текущем коде, поскольку вы на самом деле его не используете
B001ᛦ 27.09.2018 09:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
51
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

  • Вы можете использовать for для зацикливания с $i.
  • Не забудьте связать свои значения с .=.

Вы можете зацикливаться так:

<?php
    $lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
    $langArray = array('en', 'de', 'fr', 'es', 'it');

    if (!is_null($lang)) {
        $img = '';
        for($i=1;$i<=5;$i++) {
            $img .= "<img src='img/".$lang."/".$i.".png' />";
        }
    }
?>

Я отредактировал этот ответ, чтобы добавить условие, чтобы избежать проблем с $lang = NULL

Jouby 27.09.2018 09:51
Ответ принят как подходящий

Вы можете использовать циклы в html вот так

<?php for($i = 1; $i <= 5; $i++): ?>
    <img src = "img/<?= $lang ?>/<?= $i ?>.png" />
<?php endfor; ?>

<?= короткий от <?php echo

Опечатка, такое может случиться с кем угодно.

AwesomeGuy 27.09.2018 09:50

В дополнение к ответу @Jouby (это тот цикл, который вам нужен) я хотел бы, чтобы вы указали, что ваш код на самом деле небезопасен ...

Непосредственное использование параметров $ _GET в вашем выводе вызывает проблемы. Пожалуйста, сначала экранируйте значение (например, с помощью htmlspecialchars ()) или даже лучше: Проверьте, является ли значение $ lang элементом в $ langArray (например, с помощью in_array ()). Таким образом вы узнаете, какие значения будут помещены в ваш код.

Подумал только: а что, если $ _GET ['lang'] будет содержать что-то вроде этого?

"<script>alert('I can steal your session (or worse!)');</script>

Другие вопросы по теме