2009-05-01 29 views
3

多次元配列に項目を追加するにはどうすればよいですか?基本的に私は、人々がsuppermarketで購入しているものとそのどれくらいを計算するアプリケーションを作成しています。PHPの多次元配列

スーは

ジョンは1個の桃と1本のバナナを買うバターの2つの浴槽と1 歯磨き粉を買います。

は、私は、配列が唯一のアイテムと数量を記録することができ、この

$sue[butter] = array(); 
$sue[butter][] = 2; 
$sue[toothpaste] = array(); 
$sue[toothpaste][] = 1; 
$john[peach] = array(); 
$john[peach][] = 1; 
$john[banana] = array(); 
$john[banana][] = 1; 

私の現在のコードのようなものに見えると思います。

public $items = array(); 

public function AddItem($product_id) 
{ 
    if (array_key_exists($product_id , $this->items)) 
    { 
     $this->items[$product_id] = $this ->items[$product_id] + 1; 
    } else { 
     $this->items[$product_id] = 1; 
    } 
} 

私はちょうど各人のための配列の中に配置する方法を知りません。

ありがとうございます!

+0

あなたは既にショッピングカートクラスを使用しているようですので、Zackの答えはまさにぴったりでしょう。$アイテムをパブリックではなくプライベート(または保護)にし、アクセサー関数を追加することをおすすめします。 –

+0

ベン、これは初心者の質問には完全に受け入れられる場所ですのでご注意ください。そうでなければあなたに言った人は、誤った知らせをしています。 –

+0

ありがとうRex!そして、私の質問に答えた他の人のおかげで:) –

答えて

4

これを行う代わりに、クラスにカプセル化する方が簡単かもしれません。たとえば、それぞれの人物をクラスにしてから属性を与えます。

多次元配列になったら、コードを維持するのがより困難になります。例えば

(これは擬似コードです):

class Customer { 
    //this is an array of FoodItem objects. 
    private $foodItems[]; 

    // any other methods needed for access here 
} 

class FoodItem { 
    //could be a String, or whatever it needs to be 
    private $itemType; 

    //the number of that item purchased 
    private $numPurchased; 
} 
+0

こんにちはZack、私は私のページの間のセッションでそれを保存しているので、私は配列でそれが必要です!とにかくありがとう! –

+1

ちょうどFYI、セッションデータのクラス/オブジェクトを保存することができます。データに保存すると、変数がシリアライズされます。 http://us.php.net/serialize – Rob

+0

こんにちは、ロブ!私は元の配列のために検索された使用していた!私はそれが配列以上のものに使用できることを知っていませんでした、頭のおかげで! –

3

フム、多分私はここで、マルチ次元を見ることができませんか?

$sue = array(); 
$sue['butter'] = 2; 
$sue['toothpaste'] = 1; 

$john = array(); 
$john['peach'] = 1; 
$john['banana'] = 1; 

私は上記の機能が動作すると思います。

あなたはここで行ったように項目の数を保持するために、別の配列を作成する必要がいけない
+0

こんにちはTomalak、あなたの多次元配列は私が実際に書いてみたものだと思います。上記の方法を使ってこれを設定する方法がわかりません! –

+2

@Ben McRae:あなたの側には誤解があると思います。 :)私の配列は多次元ではありません。キーと値の1つの次元を持ちます。そして、あなたが今使っている機能は、実際にそれと動作します。 – Tomalak

0
$data = array(); 
$data["persons"] = array("Sue","John"); 
$data["articles"] = array("butter","toothpaste","peach","banana"); 

$data["carts"] = array(); 

$data["carts"][0][0] = 2; // sue's 2 butter packets 
$data["carts"][0][1] = 1; // sue's 1 tooth paste 

$data["carts"][1][2] = 1; // john's peach 
$data["carts"][1][3] = 1; // john's banana 
1

$sue[butter] = array(); 
$sue[butter][] = 2; 

私はこのような何かが仕事だと思う:

$customers[sue][butter] = 2; 
$customers[sue][toothpaste] = 1; 
$customers[john][peach] = 1; 
$customers[john][banana] = 1; 

この方法で、あなた顧客名の配列を作成します。次に、各顧客の配列には、その製品の配列があります。次に、各製品は、顧客が購入した製品の数を保持します。