我有一段不断失败的代码。
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
关于什么是错的任何想法?
答案 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']}");
}
}