数组不返回整个元素

时间:2012-03-01 04:12:34

标签: php arrays

我认为我只是语法无效,但对于我的生活,我无法理解。我有一个包含3个元素的嵌套数组。

$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>";
        }           
        ?>

我的问题是“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>

有人可以解释我的错误吗?提前谢谢。

4 个答案:

答案 0 :(得分:1)

您忘记了属性值周围的双引号,因此只有第一个单词才算数。其余的成为(无效)属性名称。

答案 1 :(得分:1)

习惯包装,数组索引在双引号内,即"用于字符串索引。

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

答案 2 :(得分:1)

正如Starx和Ignacio所提到的,需要引用数组的关键部分。它们是单引号还是双引号并不重要。如果您打开更详细的日志记录(如E_ALL而不是E_ALL&amp; ~E_NOTICE),您将收到如下消息:

  

PHP注意:使用未定义的常量轮播 - 在第3行的badarray.php中假定为“Carousel”

     

PHP注意:使用未定义的常量标题 - 在第3行的badarray.php中假定为“Caption”

     

PHP注意:使用未定义的常量ListItem - 在第3行的badarray.php中假定为'ListItem'

PHP尝试查找已使用这些名称定义的常量。当它找不到它时,它假设你指的是该值的字符串。这意味着如果您定义了名为“Carousel”,“Caption”或“ListItem”的常量,它将更改您定义的数组中的键值。

我看到的另一个问题,可能只是包含了部分代码,外部数组中只有一个数组,所以当你访问$ screenshot [$ row]时,什么都没有一旦你的循环增加$ row超过0。

如果您可以提供使用该数组输出的内容,我可以帮助您构建该代码。

答案 3 :(得分: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>";