【问题标题】:Cannot use a scalar value as an array in codeigniter?不能在codeigniter中使用标量值作为数组?
【发布时间】:2015-08-04 22:37:21
【问题描述】:

我收到这个非常奇怪的错误“不能将标量值用作数组” 谷歌上帝和 SOF 上的东西都没有帮助我,我正在尝试做的是我已经创建了用户会话 [使用会话数据用户名和密码],现在用户登录 my_profile 页面后,我正在附加一些会话数据,如 user_id 然后我开始得到这个错误???任何帮助或提示

//控制器

<?php 


      class My_profile extends CI_Controller {

      public function __construct()
         {
              parent::__construct();
              $this->load->library('session');
              $this->load->helper('form');
              $this->load->helper('url');
              $this->load->helper('html');
              $this->load->database();
              $this->load->library('form_validation');
        //    $this->is_login();
         }

      public function index () {

      if($this->session->userdata('is_login')) {

       $session_data = $this->session->userdata('is_login');
       $session_data['user_id'] = $this->session->userdata('user_id');
       $this->session->set_userdata("is_login", $session_data);

      $this->load->model('My_profilee');
      $data['query']=$this->My_profilee->view_data();
      $this->load->helper('url');
      $this->load->view('header2');
      $this->load->view('my_profile');
     // $this->load->view('footer');
     }else {
        echo "you don't have permission to access this page <a href=../Homecontroller/index/>Login</a>";
        die();

     }
      }



}

      ?>

//模型

<?php 


      class My_profilee extends CI_Model {

       function __construct()
     {
          // Call the Model constructor
          parent::__construct();
          $this->load->database(); 
     }


      public function view_data() {


        //echo $this->session->userdata('user_id');
        $query=$this->db->get('tbl_usrs');
        return $query->result();

      }
}

      ?>

我真正想做的是在登录到会话数据后添加用户的用户ID [来自数据库],然后根据用户ID显示用户信息??

【问题讨论】:

    标签: php codeigniter session


    【解决方案1】:

    这很简单。

    你有一个赋值,其中一个值,无论是整数还是字符串,都被赋值给一个变量:

    $session_data = $this->session->userdata('is_login');
    

    现在这是一个标量值。除非在上下文中重新定义,否则它是不可变的。您不能将数组值应用于现有的标量值,您必须实例化一个新数组,并将该值作为索引应用,然后将新项作为索引添加到新数组。

    $session_array['session_data'] = $this->session->userdata('is_login');
    

    并继续为这个数组分配变量等等。

    【讨论】:

    • 你的意思是这一行我在这行得到错误 $session_data['user_id'] = $this->session->userdata('user_id');
    • @paritosh,检查一下:stackoverflow.com/questions/6019853/…
    • @paritosh 这也是正确的,我错过了那个。在任何情况下,如果你取一个整数,比如15,并且你试图给它添加一个索引,你将无法做到。这是一个标量值,它只能是一个字符串/整数,它不能变异成一个对象或数组,例如。
    • @Ohgodwhy, $data 数组在这里没有问题,这里有问题: $session_data = $this->session->userdata('is_login'); $session_data['user_id'] = $this->session->userdata('user_id');我猜 is_login 的值是真/假,所以它不是一个数组...
    • @Ohgodwhy 敬礼......这是一个非常简单的概念,但由于一些误解,它变得更大...... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2011-08-26
    • 2021-11-28
    • 2019-12-17
    • 2014-07-11
    相关资源
    最近更新 更多