将服务器从5.2 php升级到5.4,现在有错误


Upgraded server from 5.2 php to 5.4, having errors now

第一个错误是

严格标准:只有变量才能在 196行的/home/.sites/143/site2/dispatch.php中通过引用传递

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'"));

第三个错误是

严格标准:只有变量才能在978 行的/home/.sites/143/site2/controllers/step4.php中通过引用传递

step4.php的978行看起来像

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

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

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

混合array_pop(array&$array

&符号表示函数期望通过引用传递一个数组。

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

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

更改所有类似的事件。

尝试将第一个更改为

$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返回对变量的引用,即最后一个数组成员。请注意,这只是一个严格的警告,而不是一个错误。

最理想的是,您应该继续使用5.2版本的项目,将来只使用5.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);
相关文章: