数组变量未设置-PHP Codeigniter
我正在尝试设置数组,但没有设置。每次调用Buy函数时,都会声明数组 这是控制器的功能数组变量未设置-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);
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下