以下是一些无效的简单代码。
我宣布一个班级。该类包含一个空数组。然后,在课外我尝试以一种非常简单的方式用一个项目(另一个数组)填充它。
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']但我在这里简化了。
我做了太多的程序编程......!
答案 0 :(得分:2)
数组键只能是integer
或string
(参考:Arrays)。您不能将数组作为数组键。
我相信你想要以下内容:
$drumMachine = array('category' => 'musical instrument', 'brand' => 'Emu', 'model' => 'sp1200');
$order->productsArr['drumMachine'] = $drumMachine;
然后您需要访问它的位置:
$order->productsArr['drumMachine']
答案 1 :(得分:2)
您的方法非常不合适,您可能希望通过PHP回归基础并学习一般语法。但是,这就是你要找的东西。
$order->productArr[] = $drumMachine;
您希望直接访问productArr作为属性,不需要$,而且[] =会在数组的END中添加一个新项目
答案 2 :(得分:0)
我相信你想要这个
$order->productsArr = $drumMachine;
但这种方法在设计上很糟糕。好的方法是使用setter和getters方法来访问对象属性。即使它现在看起来过度了。
答案 3 :(得分: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);