reset() -“严格标准:只有变量应该通过引用传递”[重复]
Posted
技术标签:
【中文标题】reset() -“严格标准:只有变量应该通过引用传递”[重复]【英文标题】:reset() - "Strict Standards: Only variables should be passed by reference" [duplicate] 【发布时间】:2014-08-17 18:56:59 【问题描述】:我目前正在为客户迁移一个网站。据我所知,他们的旧主机必须使用旧版本的 php。该网站目前正在他们当前的主机上工作。我正在努力为他们将其移至新主机,但出现以下错误:
PHP 严格标准:在第 17 行的 /home/parcelt2/core/public_html/loader.php 中,只能通过引用传递变量
下面是第 17 行的一段代码
$uri = parse_url($_SERVER['REQUEST_URI']);
if (substr($uri['path'], -1, 1) == '/' && !sizeof($_POST))
$new_uri = substr($uri['path'], 0, -1);
if (strlen($new_uri) > 0)
$page = reset(explode('/', $new_uri)); //line 17
if (!in_array($page, $exempt_requests))
if (isset($uri['query']) && strlen($uri['query']) > 0)
$new_uri .= '?' . $uri['query'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $new_uri, true, 301);
exit;
有人能提供解决方法或一些关于如何解决此问题的建议吗?我已尝试阅读有关此错误的其他 SO 帖子,但发现它们很难理解。
谢谢
【问题讨论】:
好的,您遇到了错误。你想让我们怎么做? 我想知道reset
在这里做什么。 explode
创建了一个全新的数组,它的指针位于主要位置 - 指向第一个元素,即。
您需要将explode调用的结果存储在一个变量中,然后将该变量传递给reset函数
我不知道这里的重置是做什么的。我不是代码的开发者。我只是想把它从旧主机上移走,这就是错误日志中显示的内容。谢谢
记得搜索错误信息。这不是一个新问题。
【参考方案1】:
reset() 采用对数组(变量)的引用,因此它不适用于函数调用的结果。
你需要做这样的事情:
$arr = explode('/', $new_uri);
$page = reset($arr);
但是,explode()
返回的数组已经将其内部指针设置为第一个元素。您根本不需要调用 reset。
【讨论】:
但是这里的reset
是什么?
@raina77ow heh...好点。我会更新答案。
我不知道这里的重置是做什么的。我不是代码的开发者。我只是想把它从旧主机上移走,这就是错误日志中显示的内容。谢谢
你能告诉我该代码如何适合我上面发布的内容吗?很抱歉很痛苦。
@BHWD 您的错误是由在函数结果上使用reset()
引起的,而不是变量引用。但是,您根本不需要使用重置。只需在第 17 行删除它即可。以上是关于reset() -“严格标准:只有变量应该通过引用传递”[重复]的主要内容,如果未能解决你的问题,请参考以下文章