Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组变量未设置-PHP Codeigniter_Php_Codeigniter_Isset - Fatal编程技术网

数组变量未设置-PHP Codeigniter

数组变量未设置-PHP Codeigniter,php,codeigniter,isset,Php,Codeigniter,Isset,我正在尝试设置数组,但没有设置。每次调用Buy函数时,都会声明数组 这是控制器的功能 public function buy() { if($this->session->userdata('counter')){ $counter = $this->session->userdata('counter'); $this->session->set_userdata('counter', $counter + 1);

我正在尝试设置数组,但没有设置。每次调用Buy函数时,都会声明数组

这是控制器的功能

public function buy() {
    if($this->session->userdata('counter')){
        $counter = $this->session->userdata('counter');
        $this->session->set_userdata('counter', $counter + 1);
    } else {
        $this->session->set_userdata('counter', 1);

    }
if(isset($bought)){
        $name = $this->input->post('name');
        $price = $this->input->post('price');
        $qty = $this->input->post('qty');
        $product = array('name' => $name, 'price' => $price, 'qty'=> $qty);
        array_push($bought, $product);
        var_dump($bought);
        die();
    } else {
        $bought = array();

    redirect("");
    }
正如您所看到的,应该记住$BUYED已设置,但它将重新声明。现在我

  • 试图使其全局化,在“public function\uuu construct()”之前
  • 尝试“如果(!空)
  • 试着投入会议,
  • 试图在整个stackoverflow中找到答案
如果需要其他信息,请告诉我。
非常感谢!

在您的代码中,当您检查
$buyed
时,它不存在,因此每次都会转到
其他部分。相反,请定义一个
空白数组
,然后在其中设置值。请尝试-

if(isset($_SESSION['bought'])){
    $name = $this->input->post('name');
    $price = $this->input->post('price');
    $qty = $this->input->post('qty');
    $product = array('name' => $name, 'price' => $price, 'qty'=> $qty);
    array_push($_SESSION['bought'], $product);
    var_dump($_SESSION['bought']);
    die();
} else {
    $_SESSION['bought'] = array();
}
然后在页面顶部开始会话。

我让它工作起来了

我在中士的帮助下做了一个变通方案,所以现在我的代码如下所示:

if($this->session->userdata('bought')){
        $name = $this->input->post('name');
        $price = $this->input->post('price');
        $qty = $this->input->post('qty');
        $product = array('name' => $name, 'price' => $price, 'qty'=> $qty);

        // please see that here I just returned from old one and added new data to the old one. 
        // Then I just added the result to the session.
        $old_session =  $this->session->userdata('bought');
        array_push($old_session, $product);
        $this->session->set_userdata('bought', $old_session);

        redirect("");
    } else {
        $this->session->set_userdata('bought', array());
}

尝试了这个,但它会被重新声明,并且始终只保留一个值,即刚刚设置的值。是的,你是对的。然后我会将所有内容传递给购物车。更新了答案。使用会话。由于这是Codeigniter,我想我将不得不使用$this->session->userdata…我会尝试,谢谢。让我们看看。你是否已在构造中设置了会话库或控制器-$this->load->library('session');在控制器construtor下