PHP - 字符串在迭代for循环内没有正确连接

时间:2014-02-19 06:04:02

标签: php string concatenation string-concatenation

我编写了一个简单的脚本,使用同时构建的4个相等长度的数组以请求的顺序向用户显示内容,但由于某种原因,由此构建的内容字符串仅与数组中的最终项连接,而不管请求的数量。

这是导致问题的代码的一部分:

$snippet="<td id = \"content\">";
for($i=0;$i<count($content_types);$i++){
    $type = $content_types[i];
    if($type == "Video")
    {
        $pos_str = ((strlen($content_pos[i]) > 0) ? "class=\"".$content_pos[i]."\"" : "");
        $file_type = $content_file_types[i];
        $snippet .= "<video ".$pos_str." width=\"320\" height=\"240\" controls>
                            <source src=\"".$content[i]."\" type=\"video/".$file_type."\">
                            Your browser does not support the video tag.
                        </video>";
    }
    if($type == "Audio")
    {
        $pos_str = ((strlen($content_pos[i]) > 0) ? "class=\"".$content_pos[i]."\"" : "");
        $file_type = $content_file_types[i];
        $snippet .= "<audio ".$pos_str." controls>
                            <source src=\"".$content[i]."\" type=\"audio/".$file_type."\">
                            Your browser does not support the audio tag.
                        </audio>";
    }
    if($type == "Text")
    {
        $snippet .= "<p class=\"content_text\">
                    ". urldecode($content[i]) ."
                </p>";
    }
    if($type == "Image")
    {
        $pos_str = ((strlen($content_pos[i]) > 0) ? "class=\"".$content_pos[i]."\"" : "");
        $snippet .= "<img src=\"
                    ".$content[i]."
                \" ".$pos_str."></img>";
    }
}
$snippet .="</td>";

不同内容类型的每个代码段都能正常工作,只是将这些值串联成一个不起作用的字符串。

两个外部的&#39; $ snippet&#39;出现的连接在输出中表示,并在循环中表示最终连接。

我已经花了好几个小时研究这个问题,并且无法弄清楚为什么只有最终项目被添加到字符串中。

我可能距离代码太近,因此无法看到我所犯的明显错误。

任何帮助都将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您在使用变量$的所有地方都缺少$i符号。

$type = $content_types[$i];
                       ^

注意:在文件顶部添加error_reporting(E_ALL & E_STRICT);,它会显示错误&amp;在这种情况下的通知。