2012-03-01 2 views
1

Я думаю, что у меня просто недействительный синтаксис, но для жизни меня я не могу понять. У меня есть вложенный массив с 3 элементами.Array Not Returning Entire Element

$screenshot = array(array(Carousel => "Library.png", Caption => "Long caption for the library goes here", ListItem => "The Library")); 

Я использую цикл for для составления HTML-кода, который содержит элементы.

<?php 
     for ($row = 0; $row < 4; $row++) 
     { 
      echo "<div class=\"feature-title\"><a href=" . $carousel_dir . $screenshot[$row]["Carousel"] . " title=" . $screenshot[$row]["Caption"] . " rel=\"lightbox[list]\">" . $screenshot[$row]["ListItem"] . "</a></div>"; 
     }   
     ?> 

Моя проблема заключается в том, что часть «title» тега «a» включает только первое слово Long. Таким образом, в вышеуказанном случае это будет:

<div class="feature-title"><a href="/images_carousel/1A-Library.png" title="Long" caption for the library goes here rel="lightbox[list]" class="cboxElement">The Library</a></div> 

Может ли кто-нибудь пролить свет на мою ошибку? Заранее спасибо.

ответ

1

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

+0

Спасибо, я знал, что это должно быть что-то простое. – Bill

1

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

$screenshot = array( 
    array( 
     "Carousel" => "Library.png", 
     "Caption" => "Long caption for the library goes here", 
     "ListItem" => "The Library") 
    ); 
+0

Я читал об этом в обоих направлениях, но я буду придерживаться этого маршрута, спасибо. – Bill

0

, пожалуйста, используйте этот код

echo "<div class=\"feature-title\"><a href='" . $carousel_dir . $screenshot[$row]["Carousel"] . "' title='" . $screenshot[$row]["Caption"] . "' rel=\"lightbox[list]\">" . $screenshot[$row]["ListItem"] . "</a></div>"; 
+0

Вы забыли цитаты для 'href'. – apfelbox

1

Как Starx и Игнасио упоминали, ключевые части массивов должны быть в кавычках. Однако неважно, являются ли они одиночными или двойными кавычками. Если включить более подробный журнал (как E_ALL вместо E_ALL & ~ E_NOTICE), вы будете получать сообщения, как это:

PHP Примечания: Использование неопределенной постоянной Carousel - предполагается, «Карусель» в badarray.php на линии 3

PHP Примечание: Использование неопределенной константы Caption - предполагается 'Надпись' в badarray.php на линии 3

PHP Примечание: Использование неопределенной константы ListItem - вымышленный 'ListItem' в badarray.php строки 3

PHP пытается найти константу, которая была определена с этими именами. Когда он не может найти один, предполагается, что вы имели в виду строку этого значения. Это означает, что если вы когда-либо определяли константу с именем «Карусель», «Caption» или «ListItem», это изменило бы значения ключей в определенном вами массиве.

Другая проблема, которую я вижу, и это может быть только то, что был включен только частичный код, был ли только один массив внутри внешнего массива, поэтому, когда вы обращаетесь к $ screenshot [$ row], будет ничего нет, когда ваш цикл увеличивает $ row за пределами 0.

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