Ротатор содержимого PHP с использованием многомерных массивов

РЕШЕНО: Пожалуйста, посмотрите мой ответ, как я решил свои проблемы.

Я не уверен, возможно ли это или нет, так как я не знаю много о массивах, но здесь ничего не говорится.

Я хочу добавить рекламу на свой сайт.

Я подумал, что смогу найти способ внедрить в него многомерные массивы для управления контентом.

Я придумал это:

$ads = array(
"ad1" => array(
title => "Advertisement Title",
url => "http://example.com",
image => "http://example.com/images/example.jpg",
description => "Advertisement Description"),
"ad2" => array(
title => "Advertisement Title",
url => "http://example.com",
image => "http://example.com/images/example.jpg",
description => "Advertisement Description"),
"ad3" => array(
title => "Advertisement Title",
url => "http://example.com",
image => "http://example.com/images/example.jpg",
description => "Advertisement Description")
);

Я прогнал этот код через проверку синтаксиса, и ошибок не было, поэтому я решил, что, по крайней мере, на правильном пути.

Что я не понимаю, так это как написать foreach цикл, который случайным образом выбирает одну из рекламных объявлений.

Нужно ли мне изменить "ad1" => array( в ad[1] => array(?

Я не использовал слишком много массивов, поэтому я не знаю, как нацелить определенную часть этого в каждом цикле.

Я надеюсь создать цикл foreach, который будет выводить что-то вроде:

<a href="UrlFromArray"><img src="https://web-answers.ru/wp-content/uploads/2019/02rcFromArray" alt="TitleFromArray">

<br>

<p>DescriptionFromArray</p>

Это достижимо?

РЕДАКТИРОВАТЬ & ОБНОВИТЬ:

function displayAds728x90() {
$ads = array(
"ad1" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad2" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad3" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description")
);
$randomAd = array_rand($ads);
echo '<a href="'.$randomAd->url.'" target="_blank">';
echo '<img src="'.$randomAd->image.'" alt="'.$randomAd->title.'">';
echo '</a>';
echo '<p>';
echo $randomAd->description;
echo '</p>';

}
displayAds728x90();

Следуя ответу Дайнлайта, я пришел с приведенным выше кодом.

Теперь моя единственная проблема — я получаю следующие ошибки:

Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 23
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 27

Просто, чтобы вы знали, какие номера строк, какой мой полный код:

<img src="http://www.example.com/images/your_banner_here.png">

<?php
function displayAds728x90() {
$ads = array(
"ad1" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad2" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad3" => array(
'title' => "Advertisement Title",
'url' => "http://example.com",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description")
);
$randomAd = array_rand($ads);
echo '<a href="'.$randomAd->url.'" target="_blank">';
echo '<img src="'.$randomAd->image.'" alt="'.$randomAd->title.'">';
echo '</a>';
echo '<p>';
echo $randomAd->description;
echo '</p>';

}
displayAds728x90();
?>

Любые идеи о том, что вызывает эти ошибки?

ОБНОВЛЕНИЕ 2:

Отредактировал следующий раздел и добавил недостающие фрагменты кода:

$randomAd = array_rand($ads);
echo '<a href="'.$ads->$randomAd->url.'" target="_blank">';
echo '<img src="'.$ads->$randomAd->image.'" alt="'.$ads->$randomAd->title.'">';
echo '</a>';
echo '<p>';
echo $ads->$randomAd->description;
echo '</p>';

Выполнил var_dump на $ads и получил следующее:

array(3) { ["ad1"]=> array(4) { ["title"]=> string(19) "Advertisement Title" ["url"]=> string(18) "http://example.com" ["image"]=> string(37) "http://example.com/images/example.jpg" ["description"]=> string(25) "Advertisement Description" } ["ad2"]=> array(4) { ["title"]=> string(19) "Advertisement Title" ["url"]=> string(18) "http://example.com" ["image"]=> string(37) "http://example.com/images/example.jpg" ["description"]=> string(25) "Advertisement Description" } ["ad3"]=> array(4) { ["title"]=> string(19) "Advertisement Title" ["url"]=> string(18) "http://example.com" ["image"]=> string(37) "http://example.com/images/example.jpg" ["description"]=> string(25) "Advertisement Description" } }

Отход от полного кода страницы, размещенного над ошибками, теперь:

 Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 23
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 23
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 24
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 27
Sorry, an error happened. Please try again later
Error 8 : Trying to get property of non-object in /home/jollyrogerpcs/public_html/includes/adRotator728_90.php on line 27

3

Решение

Функция foreach используется для перебора всех элементов массива. Вы хотите получить случайные элементы массива. Посмотрите на эту функцию, возможно, она вам пригодится:

http://php.net/manual/en/function.array-rand.php

Вы получаете случайный элемент и ссылаетесь на него примерно так:

<?php $random_element = array_rand ( $ads); ?>

<a href="<?php echo $ads->$random_element->url ?>">
<img src="<?php echo $ads->$random_element->image ?>" alt="<?php echo $ads->$random_element->title ?>"></a>
<p><?php echo $ads->$random_element->description; ?></p>
3

Другие решения

Я понял. Я публикую это как ответ на тот случай, если у другого пользователя возникнет похожая проблема, и он может использовать мой вопрос и ответ в качестве справки 🙂

Полный рабочий код:

function displayAds728x90() {
$ads = array(
"ad1" => array(
'title' => "Advertisement Title",
'url' => "http://example.com/1",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad2" => array(
'title' => "Advertisement Title",
'url' => "http://example.com/2",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description"),
"ad3" => array(
'title' => "Advertisement Title",
'url' => "http://example.com/3",
'image' => "http://example.com/images/example.jpg",
'description' => "Advertisement Description")
);
$randomAd = array_rand($ads);
echo '<a href="'.$ads[$randomAd]['url'].'" target="_blank">';
echo '<img src="'.$ads[$randomAd]['image'].'" alt="'.$ads[$randomAd]['title'].'">';
echo '</a>';
echo '<p>';
echo $ads[$randomAd]['description'];
echo '</p>';

}
displayAds728x90();

Вместо нацеливания клавиш с $ads->$randomAd->description Я нацелился на них с $ads[$randomAd]['description'] и это работает 🙂

0

По вопросам рекламы [email protected]