На моем сайте есть изображение в определенном месте, и когда пользователь перезагружает страницу, он должен увидеть другое изображение на том же месте. У меня есть 30 изображений, и я хочу изменить их случайным образом при каждой перезагрузке. Как мне это сделать?Как показать произвольное изображение на веб-странице?
ответ
Фактический акт выбора случайного изображения потребует случайного числа. Есть несколько способов, которые могут помочь в этом:
rand()
is used to generate a random number.array_rand()
is used to select a random element's index from an array.
Вы можете придумать вторую функцию как ярлык для использования первого, если вы конкретно имеете дело с массивом. Так, например, если у вас есть массив изображения путей, из которых выбрать тот, который вы хотите отобразить, вы можете выбрать случайный один такой:
$randomImagePath = $imagePaths[array_rand($imagePaths)];
Если вы храните/извлечения изображений в каким-либо другим способом, который вы не указали, тогда вы не сможете использовать array_rand()
так же легко. Но, в конечном счете, вам нужно создать случайное число. Поэтому для этого можно было бы использовать rand()
.
array_rand() просто возвращает ключ/индекс, а не сам элемент. Исправьте меня, если я ошибаюсь, но я думаю, что ответ oyur не работает – Sliq
@Panique: Я думаю, вы можете быть правы. Ответ обновлен. Благодаря! – David
it worksss thankyou so much .... но как я могу дать другой путь изображения ??? Я даю вот так: $ images = glob ("images/fb.png", GLOB_BRACE); \t $ images = glob ("images/ld.png", GLOB_BRACE); –
Сделать массив с «информацию о фото» (имя файла или путь) у вас есть, как
$pictures = array("pony.jpg", "cat.png", "dog.gif");
и случайно называют элемент этого массива с помощью
echo '<img src="'.$pictures[array_rand($pictures)].'" />';
Выглядит странно, но работает ,
где я должен сделать массив? в db? –
Прежде, чем вы, ребята, спросите:;) => array_rand() возвращает код INDEX KEY массива, а не сам элемент! см. http://php.net/manual/en/function.array-rand.php – Sliq
@UmairJaved: Если данные хранятся в базе данных, вы должны извлекать их из базы данных в массив PHP. Затем вы можете просто случайно выбрать из этого массива, как в этом ответе. Мы не знаем, где/как хранятся ваши данные, так что это зависит от вас. – David
Если хранить информацию в базе данных, вы можете также выбрать случайное изображение:
MySQL:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1
PgSQL:
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1
Бест, Philipp
Большое спасибо. Это работает !!!:) –
Простым способом создания случайных изображений во всплывающем меню является этот метод ниже.
(Примечание: Вы должны переименовать изображения в «1.png», «2.png» и т.д.)
<?php
//This generates a random number between 1 & 30 (30 is the
//amount of images you have)
$random = rand(1,30);
//Generate image tag (feel free to change src path)
$image = <<<HERE
<img src="{$random}.png" alt="{$random}" />
HERE;
?>
* Content Here *
<!-- Print image tag -->
<?php print $image; ?>
Этот метод прост, и я использую это каждый раз, когда мне нужно случайное изображение.
Надеюсь, это поможет! ;)
это показывает мне 29 на моем сайте .. :(нет изображения .. –
не могли бы вы уточнить свой код ??? –
Этот кусок кода должен работать. Убедитесь, что вы ** переименовали ** изображения типа "1 .png "," 2.png "," 3.png "и т. д. – zeldarulez
Я недавно написал это, которое загружает другой фон на каждую страницу. Просто замените константу на путь к вашим изображениям.
Что он делает, это цикл через ваш imagedirectory и случайным образом выбирает файл из него. Таким образом, вам не нужно отслеживать свои изображения в массиве или db или что-то еще. Просто загрузите изображения в свой imagedirectory, и они будут выбраны (случайно).
вызова, как:
$oImg = new Backgrounds ;
echo $oImg -> successBg() ;
<?php
class Backgrounds
{
public function __construct()
{
}
public function succesBg()
{
$aImages = $this->_imageArrays(\constants\IMAGESTRUE, "images/true/") ;
if(count($aImages)>1)
{
$iImage = (int) array_rand($aImages, 1) ;
return $aImages[$iImage] ;
}
else
{
throw new Exception("Image array " . $aImages . " is empty");
}
}
private function _imageArrays($sDir='', $sImgpath='')
{
if ($handle = @opendir($sDir))
{
$aReturn = (array) array() ;
while (false !== ($entry = readdir($handle)))
{
if(file_exists($sDir . $entry) && $entry!="." && $entry !="..")
{
$aReturn[] = $sImgpath . $entry ;
}
}
return $aReturn ;
}
else
{
throw new Exception("Could not open directory" . $sDir . "'");
}
}
}
?>
как вы храните путь к изображению? базы данных или из файловой системы? –
, на каком языке у вас есть эти изображения; в массиве js/php, получить из базы данных? также, [что вы пробовали] (http://www.whathaveyoutried.com) –
не из db. я просто вставляю картинки вручную на страницу, но когда пользователь посещает мой сайт, он видит только одну картинку вместо всех фотографий. –