我已将PHP7添加到本地服务器,我收到此错误:
消息:数组转换为字符串文件名: libraries / Data_views_array.php行号:59
data = $this->CI->$this_data[0]->$method($pass_var);
我发现了这篇帖子:PHP Notice: Array to string conversion only on PHP 7我将代码更改为:
data = $this->CI->$this_data[0]->{$method($pass_var)};
但我得到了一个不同的错误:
消息:调用未定义的函数get_page_id()
一切都在PHP 5.6中运行,我不知道如何在PHP 7中使用它。
请帮忙。
class Data_views_array {
var $CI;
public function __construct() {
$this->CI =& get_instance();
}
public function action_per_module($array_modules) {
$array_to_display = array();
$array_view_data = array();
if (!$array_modules) {
return false;
}
else {
while (list($key, $this_data) = each($array_modules)) {
/*
* $this_data[0] - is the controller name
* loading this model
*/
$this->CI->load->library($this_data[0]);
if ($this_data[2] == 'NULL') {
/*
* if there are no arguments (method and passing variable)
* the model is called
*/
$data = $this->CI->$this_data[0];
}
else {
/*
* getting method and passing variable from arguments
*/
//echo $this_data[2]. " - json<br>";
$obj = json_decode($this_data[2]);
$method = key(get_object_vars($obj));
//echo $method. " - method<br>";
$pass_var = $obj->$method;
/*
* getting data for view
*/
$data = $this->CI->$this_data[0]->$method($pass_var);
}
/*
* name of the View
*/
$view = $this_data[1];
/*
* adding the pair of View to the $array_view_data
*/
array_push($array_view_data, $view);
array_push($array_view_data, $data);
/*
* passing View Array to Display array
*/
array_push($array_to_display, $array_view_data);
/*
* clear the array of the pair of View and passing variable
*/
unset($array_view_data);
$array_view_data = array();
}
}
return $array_to_display;
}
}
从库中调用的第一个类 - $ this_data [0] == page_title_display 具有方法:get_page_id($ page_id)。该类获取页面的标题。 为什么同样的脚本在PHP 5.6中工作,它在PHP 7中不起作用? 为什么在PHP 5.6中找到get_page_id函数但在PHP 7中找不到?
class Page_title_display {
var $CI;
public function __construct(){
$this->CI =& get_instance();
}
public function get_page_id($page_id) {
$this->CI->load->model('pageTitle_model');
$title = $this->CI->pageTitle_model->getPagetitle($page_id);
return $title;
}
}
答案 0 :(得分:1)
我解决了这个问题。出于某种原因,当$ this_data [0]被用作数组的一部分时,PHP 7不喜欢: data = $ this-&gt; CI-&gt; $ this_data [0] - &gt; $ method($ pass_var);
第一个解决方案: 我将此值分配给变量:
$ libControl = $ this_data [0]; data = $ this-&gt; CI-&gt; $ libControl-&gt; $ method($ pass_var);
第二个解决方案: 括号中只有$ this_data [0]:
data = $ this-&gt; CI-&gt; {$ this_data [0]} - &gt; $ method($ pass_var);