2015-07-29 2 views
3

РЕШЕНИЕ: Пожалуйста, см. Мой ответ, как я исправил свои проблемы.PHP Rotator с использованием многомерных массивов

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

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

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

Я пришел с этим:

$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(?

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

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

<a href="UrlFromArray"><img src="ImageSrcFromArray" alt="TitleFromArray">

<br>

<p>DescriptionFromArray</p>

Является ли это достижимо?

EDIT & UPDATE:

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(); 

После ответа, данного Dynelight я придумываю коду выше.

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

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(); 
?> 

Любые идеи о том, что является причиной эти ошибки?

UPDATE 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

Вы получаете elemenet случайно и ссылаться на него что-то вроде этого:

<?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> 
+0

Я следил за вашим предложением и придумал код. Теперь я просто получаю ошибки, что означает, что он прогрессирует :) см. Мое редактирование? –

+1

http://php.net/array_rand «Выбирает одну или несколько случайных записей из массива и возвращает ключ (или ключи) случайных записей». – Jessica

+0

@ Джессика собирает их :), но где-то в моем коде у меня все еще есть ошибки при попытке «эхо» ключевых значений :) Я уверен, что это простое исправление. –

0

Я понял это. Я отправляю это как ответ только в случае, если другой пользователь имеет аналогичный вопрос и может использовать мой вопрос и ответ на него как помощь :)

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

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 I нацелил их на $ads[$randomAd]['description'], и он работает :)

Смежные вопросы