Количество div-ов в зависимости от количества значений в массиве на PHP
Допустим, есть массив: значение1, значение2, значение3
И мне нужен код, который будет генерировать div (пусть это будет ссылка xxx.yyy/zzz). Причём этих div-ов должно генерироваться несколько, в зависимости от количества значений в массиве. И в каждый div должно автоматически подставляться это значение (xxx.yyy/zzz/значение1; xxx.yyy/zzz/значение2 и так далее)
Массив и подставление значений я примерно понимаю, как реализовать. Но не могу понять момент генерации количества div-ов в зависимости от количества значений в массиве
По просьбе прописал код:
<div class="container">
<? $massive = array("значение1", "значение2", "значение3") ?>
<a href="xxx.yyy/zzz/'.$massive[0].'"></a>
<a href="xxx.yyy/zzz/'.$massive[1].'"></a>
<a href="xxx.yyy/zzz/'.$massive[2].'"></a>
</div>
Ответы (3 шт):
Но не могу понять момент генерации количества div-ов в зависимости от количества значений в массиве
А что тут понимать. Количество элементов в массиве узнаётся фукнкцией count. Вот и всё. Дальше делается цикл от 0 до данного числа (точнее обычно от i=0 до i<count. То есть строго меньше), а внутри тела цикла делается всё, что необходимо
Тут всё просто. Берём ваш массив и для каждого элемента (foreach) делаем следующее:
<div class="container">
<?php foreach($massive as $element): ?>
<a href="xxx.yyy/zzz/<?= $element;?>"></a>
<?php endforeach; ?>
</div>
Если у вас значения хранятся не просто в массиве, а в ассоциативном массиве, то можно сделать следующее:
<div class="container">
<?php foreach($massive as $element): ?>
<a href="xxx.yyy/zzz/<?= $element['value']; ?>"></a>
<?php endforeach; ?>
</div>
Не стоить забывать, что:
foreach работает только с массивами и объектами, и будет генерировать ошибку при попытке использования с переменными других типов или неинициализированными переменными
Иными словами: надо проверить ваш massive на существование, и если он не существует (неинициализирован), то пропускать вывод. Ну, или делать что-то другое.
<div class="container">
<?php if(!empty($massive)): ?>
<?php foreach($massive as $element): ?>
<a href="xxx.yyy/zzz/<?= $element['value']; ?>"></a>
<?php endforeach; ?>
<?php else: ?>
some else
<?php endif; ?>
</div>
Опираясь на ответ от Pashok, я допилил решение данной проблемы:
(там слишком много тегов и функция endforeach, из-за которых первоначальное решение у меня не работало)
<div class="container"> //Контейнер, в котором будут генерироваться div-ы
<?
$massive = array("значение1", "значение2", "значение3");
/*В данном случае можно использовать только индексированные массивы,
или массивы, где ключами являются только числа*/
foreach($massive as $element) { //Запуск цикла
/*$element - автоматически подставляемое значение из массива*/
echo '<a href="xxx.yyy/zzz/'.$element.'"></a>'
}
?>
</div>
По итогу получаем генерацию div-ов в количестве, равному количеству значений в массиве