У меня есть слайдер для прокрутки изображений, и я добавляю все изображения в слайдер через php
Ситуация такова, что для работы слайдера нужно как минимум 4 изображения, и я написал соответствующий код, который копирует и вставляет изображения, если мы добавим только одно или два
Вот рабочий код
<?php if (count($images) < 4) { ?>
<?php
$images = array_merge($images, $images);
$images = array_merge($images, $images);
$images = array_slice($images, 0, 4);
foreach ($images as $image) {
if ($image->image_id) { ?>
<div class = "slider-image">
<img src = "<?= $image->url ?>" alt = "<?= $image->name ?>">
</div>
<?php } ?>
<?php } ?>
<?php } ?>
И есть эта строка
if ($image->image_id)
То есть у меня может быть ситуация, что такого изображения нет в базе, и чтобы не было ошибок, я добавил соответствующую проверку
Итак, если у меня изображение, которого нет в базе, то этот код копирования не работает, так как копирует пустое изображение, которое потом не отображается
$images = array_merge($images, $images);
$images = array_merge($images, $images);
$images = array_slice($images, 0, 4);
Как учесть тот фактор, что картинки нет в базе и исправить код копирования? Или мне нужно использовать другую реализацию здесь?
🤔 А знаете ли вы, что...
PHP поддерживает расширения для работы с множеством сторонних сервисов и API.
Я предполагаю, что ваш $images
не пуст и представляет собой обычный список (имеет последовательные индексы, начинающиеся с нуля). Просто заполните массив изображений в цикле следующим образом:
$images = [0,1];
$i = 0;
while( count( $images ) < 4 )
$images[] = $images[ $i++ ];
print_r($images); # [0,1,0,1]
/*
For given initial arrays we will get following results:
[0] -> [0,0,0,0]
[0,1] -> [0,1,0,1]
[0,1,2] -> [0,1,2,0]
[0,1,2,3] -> [0,1,2,3]
*/
Если у вас есть фиктивные объекты изображений, сначала отфильтруйте их:
$images = array_filter($images, fn($image) => !empty($image->image_id) );