这个PHP代码有什么问题?

时间:2011-02-05 22:48:57

标签: php

我有一段不断失败的代码。

    if (isset($_GET ['id']) && $rawdata) {
        if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) {
        header("Location: http://".$_SERVER['SERVER_NAME'].".$rawdata['htmltitle'].");
        } 
    }

失败的行是带有标题的行,并且失败并显示:

PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

关于什么是错的任何想法?

3 个答案:

答案 0 :(得分:4)

如果要索引字符串中的数组,则需要使用{}

header("Location: http://${_SERVER['SERVER_NAME']}${rawdata['htmltitle']}");

答案 1 :(得分:4)

你必须写:

header("Location: http://$_SERVER[SERVER_NAME]$rawdata[htmltitle]");

或者:

header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}");

或者:

header('Location: http://' . $_SERVER['SERVER_NAME'] . $rawdata['htmltitle']);

您不能在字符串中的数组偏移访问中使用字符串(T_CONSTANT_ENCAPSED_STRING),您需要使用T_STRING

答案 2 :(得分:1)

http://php.net/manual/en/language.types.string.php PHP对字符串中的变量插值很感兴趣:必须使用{braces}来包装带有数组索引和表达式的字符串

这应该有效

if (isset($_GET ['id']) && $rawdata) {
    if ($_SERVER["REQUEST_URI"] != $rawdata ['htmltitle']) {
    header("Location: http://{$_SERVER['SERVER_NAME']}{$rawdata['htmltitle']}");
    } 
}