【问题标题】:Upgraded server from 5.2 php to 5.4, having errors now将服务器从 5.2 php 升级到 5.4,现在有错误
【发布时间】:2013-12-13 20:01:54
【问题描述】:

第一个错误是

严格标准:只有变量应该在 /home/.sites/143/site2/dispatch.php 第 196 行通过引用传递

dispatch.php 的第 196 行看起来像这样

$table_name = array_pop(split('/',$controller));

第二个错误是

严格标准:只有变量应该在第 18 行的 /home/.sites/143/site2/lib/referer.php 中通过引用传递

referer.php 的第 18 行看起来像这样

$agentInfo = array_pop($db->get('agencies','company_name,enabled',"id='$agent_id'"));

第三个错误是

严格标准:只有变量应该在 /home/.sites/143/site2/controllers/step4.php 第 978 行通过引用传递

step4.php 的第 978 行看起来像这样

$info = array_pop($this->db->get_records_by_sql($sql));

【问题讨论】:

标签: php


【解决方案1】:

在您的代码中,您将split() 函数的返回值传递给array_pop(),但array_pop() 期望通过引用传递一个数组,而不是一个值。

您可以通过查看array_pop() 文档中的函数描述来验证这一点:

混合数组_pop(数组&$array

& 符号表示该函数需要一个通过引用传递的数组。

您可以通过使用数组变量来存储函数的输出来解决此问题。另外,请注意 split() 已弃用。请改用explode()

$array = explode('/', $controller);
$table_name = array_pop($array);

更改所有相似的匹配项。

【讨论】:

  • 尝试生成错误 Parse error: syntax error, unexpected '$table_name' (T_VARIABLE) in /home/.sites/143/site2/dispatch.php on line 134 我也尝试过 preg_split 和这也会产生不同的错误:[
  • @CanadianCaveman:什么错误?你真的按照我的建议更改了代码吗?
  • Parse error: syntax error, unexpected '$table_name' (T_VARIABLE) in /home/.sites/143/site2/dispatch.php on line 134 是我得到的错误。
  • @CanadianCaveman:这是不言自明的。在第一行末尾添加分号。
【解决方案2】:

尝试将第一个更改为

$r=explode('/',$controller);
$table_name = array_pop($r);

然后

$q=$db->get('agencies','company_name,enabled',"id='$agent_id'");
$agentInfo = array_pop($q);

$q=$this->db->get_records_by_sql($sql);
$info = array_pop($q);

这是因为函数array_pop 返回一个对变量的引用,即最后一个数组成员。请注意这只是严格的警告,而不是错误。

【讨论】:

  • 感谢 Cole,您的修复工作有效,还告诉我为什么它不能正常工作!
【解决方案3】:

最好的是,你应该使用 5.2 版本的项目,以后只使用 5.4。你发现了这个错误,但你可以在以后找到任何其他错误,这不是消除项目中所有错误的好方法。

【讨论】:

    【解决方案4】:

    该错误意味着 PHP 函数 array_pop() 需要引用变量而不是值。看到这个页面上 $array 参数旁边的小 & 了吗?

    http://www.php.net/manual/es/function.array-pop.php

    您可以使用以下方法解决此问题:

    $data = $this->db->get_records_by_sql($sql);
    $info = array_pop($data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多