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

あなたのアプローチはかなり外れています。PHP の基本に立ち返って、一般的な構文を学びたいと思うかもしれません。ただし、ここにあなたが探しているものがあります。

$order->productArr[] = $drumMachine;

属性として productArr に直接アクセスしたい場合、$ は必要ありません。[] = は新しい項目を配列の END に追加します。

于 2013-08-16T03:09:25.117 に答える
2

integer配列のキーは、またはstring(参照: Arrays )のいずれかのみです。配列キーとして配列を使用することはできません。

私はあなたが次のことを望んでいると信じています:

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

次に、アクセスする必要がある場所で次を使用します。

$order->productsArr['drumMachine']
于 2013-08-16T03:09:18.857 に答える
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 に答える