Итак, у меня в основном есть этот код:
<?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
для зацикливания с $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
Вы можете использовать циклы в html вот так
<?php for($i = 1; $i <= 5; $i++): ?>
<img src = "img/<?= $lang ?>/<?= $i ?>.png" />
<?php endfor; ?>
<?=
короткий от <?php echo
Опечатка, такое может случиться с кем угодно.
В дополнение к ответу @Jouby (это тот цикл, который вам нужен) я хотел бы, чтобы вы указали, что ваш код на самом деле небезопасен ...
Непосредственное использование параметров $ _GET в вашем выводе вызывает проблемы. Пожалуйста, сначала экранируйте значение (например, с помощью htmlspecialchars ()) или даже лучше: Проверьте, является ли значение $ lang элементом в $ langArray (например, с помощью in_array ()). Таким образом вы узнаете, какие значения будут помещены в ваш код.
Подумал только: а что, если $ _GET ['lang'] будет содержать что-то вроде этого?
"<script>alert('I can steal your session (or worse!)');</script>
$langArray
не имеет никакого смысла в текущем коде, поскольку вы на самом деле его не используете