消息:仅在PHP7 Codeigniter中进行数组到字符串转换

时间:2017-12-07 03:06:18

标签: php codeigniter

我已将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;
    }
}

1 个答案:

答案 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);