私の問題です。私は連想配列を持ち、キーが関数に渡されたアイテムオブジェクトのアイテムIDと一致するようにします。アイテムIDキーが配列にまだ存在しない場合は、カートの配列にアイテムIDをキーとして追加し、キー値として新しい配列["Item"=>$item,"Quantity=>1]
を追加したいとします。Php連想配列値の挿入、間違ったキー表示
キーがすでに存在する場合は、カートの配列にアイテムIDをインデックス付けすることで取得される配列に格納されている数量を更新したいだけです。
以下は私が(Cart.class.phpにある)これらの結果を生み出すだろうと思ったことを持っているコードである。
private $cart_items = array();
public function add_to_cart($item, $quantity = 1){
if(!isset($item) || !isset($item->ItemID)){
throw new Exception("Error adding item to cart");
}
if(!array_key_exists($item->ItemID,$this->cart_items)){
$this->cart_items[$item->ItemID] = array("Item"=>$item,"Quantity"=>$quantity);
}else{
$this->cart_items[$item->ItemID]["Quantity"] += $quantity;
}
$this->number_of_cart_items+=$quantity;
}
しかし、var_dump($this->cart_items)
を使用する場合は、以下が出力され:
array(2){
[
0
] => NULL [
1
] => array(2) {
[
"Item"
] => object(stdClass)#2 (8) {
[
"ItemID"
] => int(11) [
"ItemName"
] => string(18) "Kids check T-Shirt" [
"ShortDescription"
] => string(20) "A kids check T-Shirt" [
"LongDescription"
] => string(51) " A kids check T-shirt perfect for formal occasions!" [
"ItemPrice"
] => float(33.59) [
"ImagePath"
] => string(51) "kozzi-26129586-1591x2387.jpg" [
"QuantityAvailable"
] => int(100) [
"ItemSupplier_SupplierID"
] => int(1)
} [
"Quantity"
] => int(1)
}
}
私は、$item->ItemID
が連想配列のキーとして使用されていないことを認識しています(最初のものがnullの場合、キーは[0] [1]です。を使用しています)。 私の質問は私は何ですか?間違っている、なぜidが配列のキーとして使われていないのですか?
おかげ
を参照してくださいはいadd_to_cart機能 – Terminus
内部からのvar_dump($アイテム)を行いますが、私はアイテムIDもcart_items連想配列のインデックスであることをことをしたいと思います。 – Eladian
私は$ itemのvar_dumpを意味し、ここに結果を投稿します – Terminus