【问题标题】:how to save many objects in a $session array variable如何在 $session 数组变量中保存许多对象
【发布时间】:2013-11-19 13:12:02
【问题描述】:

我是面向对象编程的新手,所以这个问题可能很愚蠢......

我在一个名为 classProduct.php 的单独文件中创建了我的类

<?php
class  product{

    public $prodId;
    public $prodName;
    public $prodPrice;

    public function __construct($prodId,$prodName,$prodPrice){
        $this->prodId = $prodId;
        $this->prodName=$prodName;
        $this->prodPrice=$prodPrice;
    }

    public function get_prodId(){
        return $this->prodId;
    }

    public function get_prodName(){
        return $this->prodName;
    }

    public function get_prodPrice(){
        return $this->prodPrice;
    }
}
?>

然后我尝试在 $_SESSION 变量中创建一个新对象。这发生在另一个名为 dailySales.php 的文件中,我在其中包含以前的文件:

include_once("classProduct.php");

我想做的是将每个新对象保存在$_SESSION['myItems'] 中。我正在尝试类似:

$newItem= new product($var,$var,$var);
$_SESSION['myItems']=array($newItem); // I believe here is where I do it wrong

每当买家多选择一种产品时,页面就会重新加载(使用 ajax)。当我echovar_dump $_SESSION['myItems'] 我只得到最后一个对象。我需要进行哪些更改才能使其正常工作?

当然,我确实需要这个对象,这样我就可以轻松地从购物车中删除一个产品,如果 按下“删除”。

【问题讨论】:

    标签: php session object


    【解决方案1】:

    这在本地对我有用。

    将您的 items 会话变量定义为数组,然后使用 array_push 将它们推送到变量中

    class product {
    
      public $prodId;
      public $prodName;
      public $prodPrice;
    
      public function __construct($prodId, $prodName, $prodPrice) {
        $this->prodId    = $prodId;
        $this->prodName  = $prodName;
        $this->prodPrice = $prodPrice;
      }
    
      public function get_prodId() {
        return $this->prodId;
      }
    
      public function get_prodName() {
        return $this->prodName;
      }
    
      public function get_prodPrice() {
        return $this->prodPrice;
      }
    }
    

    然后像这样使用它:

    $product = new product(1, "test", 23);
    $product2 = new product(2, "test2", 43);
    
    $_SESSION['items'] = array();
    array_push($_SESSION['items'], $product, $product2);
    echo '<pre>';
    print_r($_SESSION['items']);
    echo '</pre>';
    

    这是print_r()的输出

    Array
    (
        [0] => product Object
            (
                [prodId] => 1
                [prodName] => test
                [prodPrice] => 23
            )
    [1] => product Object
        (
            [prodId] => 2
            [prodName] => test2
            [prodPrice] => 43
        )
    
    )
    

    【讨论】:

    • 不,这不是我想要的...我希望存储对象的变量的名称相同...我希望它自动增加而不是手动增加..也请提供所有该代码导致我看不到您在 print_r 中传递的内容,也看不到您在哪里使用 array_push ..
    • 您不必手动执行此操作,这只是一个示例。此外,您必须在第一个代码块中向下滚动才能查看其余代码。我会研究它的名称作为参考
    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多