0

这是一些不起作用的简单代码。

我声明一个类。该类包含一个空数组。然后,在课堂之外,我尝试以一种非常简单的方式用单个项目(另一个数组)填充它。

class Order {

public $productArr = array();
function __construct (){

}
}

$order = new Order();

$drumMachine = array('category' => 'musical instrument', 'brand' => 'Emu', 'model' =>      'sp1200');

$order->$productsArr[$drumMachine];

这样做的正确方法是什么?$drumMachine 可能来自 $_SESSION['cart'] 但我在这里进行了简化。

我已经做了太多的程序编程......!

4

3 回答 3

2

数组键只能是integerstring(参考:数组)。您不能将数组作为数组键。

我相信您想要以下内容:

$drumMachine = array('category' => 'musical instrument', 'brand' => 'Emu', 'model' => 'sp1200');
$order->productsArr['drumMachine'] = $drumMachine;

然后在您需要访问它的地方使用:

$order->productsArr['drumMachine']
于 2013-08-16T03:09:18.857 回答
2

您的方法非常偏离,您可能想回到 PHP 的基础知识并学习一般语法。但是,这就是您要查找的内容。

$order->productArr[] = $drumMachine;

您想直接将 productArr 作为属性访问,不需要 $ ,并且 [] = 将在数组的 END 中添加一个新项目

于 2013-08-16T03:09:25.117 回答
0

看来你$drumMachine也是一个对象:

class OrderProduct
{
    public $category;
    public $brand;
    public $model;

    public function __construct($category, $brand, $model)
    {
        $this->category = $category;
        $this->brand = $brand;
        $this->model = $model;
    }
}

$drumMachine = new OrderProduct('musical instrument', 'Emu', 'SP1200');

考虑对Order类进行以下更改:

class Order {
    private $productArr = array();

    public function addProduct(OrderProduct $product)
    {
        $this->productArr[] = $product;
    }
}

$order = new Order();
$order->addProduct($drumMachine);
于 2013-08-19T03:07:10.783 回答