第一个错误是
严格标准:只有变量才能在 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);