|
非常感謝您在前一篇的講解
但我看完後還是有些不明白的地方
若下面問題或觀念有錯誤的地方希望您能不吝指教
1. 我們使用new類別名稱的方法建立cart物件 請問cart物件裡面的屬性值都是由書上18-15頁的11行來的嗎?(就是每一件商品加入購物車的值都是由這邊來的) $cart->add_item($_POST['id'],$_POST['qty'],$_POST['price'],$_POST['name']);
2. 執行物件中add_item()方法 購物車中若沒有這個產品就新增產品到購物車的陣列之中 並將商品資訊設定為參數 執行後參數值會變成物件的屬性值 例如: $cart->add_item(1,1,10,'鉛筆');
$this->items[]=1; $this->itemqtys[1] = 1; $this->itemprices[1] = 10; $this->iteminfo[1] = '鉛筆';
請問執行add_item()方法後參數值會變成物件的屬性值 1,1,10,'鉛筆'是被儲存到那邊了?
var $items = array(); var $itemprices = array(); var $itemqtys = array(); var $iteminfo = array();
是一個一個被儲存在上方類別屬性的陣列裡面嗎?
foreach($cart->items as $value){ echo $value."</br>"; }
所以我才可以在程式裡用foreach()函式取出陣列裡面1這個值嗎?
而其他方法裡面需要某些商品資訊也是來類別屬性的陣列裡面取用嗎(ex.$this->itemqtys[$itemid] = $qty;)?
就像11-7頁21-26行物件名稱->屬性=值 值是被儲存到那邊了呢? 3. 您說函式宣告時可以同時定義所帶的參數的初值,這裡設定FALSE表示這二個參數沒有初值為空。 為什麼function add_item($itemid,$qty=1,$price = FALSE, $info = FALSE) $price 要給 FALSE 而不給 0 所代表的意義不一樣嗎?
4. 執行add_item()方法後要更新商品數量 _update_total() if(sizeof($this->items > 0)){ 您說sizeof() 可以計算指定的陣列中的元素數目。 但為什麼不是寫成 if(sizeof($this->items) > 0){ 先計算陣列中的元素數目 如果大於零再執行以下動作 另外sizeof()函式可以用count()函式取代嗎?
5. 為什麼_update_total()方法$this->total裡面還要再寫一次$this->total + foreach($this->items as $item) { $this->total = $this->total + ($this->itemprices[$item] * $this->itemqtys[$item]); $this->itemcount++; }
6. function get_contents() { $items = array(); foreach($this->items as $tmp_item) { $item = FALSE; $item['id'] = $tmp_item; $item['qty'] = $this->itemqtys[$tmp_item]; $item['price'] = $this->itemprices[$tmp_item]; $item['info'] = $this->iteminfo[$tmp_item]; $item['subtotal'] = $item['qty'] * $item['price']; $items[] = $item; } return $items; } 經過您的說明我還是不太懂 get_contents()方法實際的功用?
為什麼還要將$items 中購物車內容資料時所存取的暫存陣列存到$item裡面呢?
您說get_contents()的功能在取得Session中所記錄的購物車內容 所以get_contents()裡面的$this->items資料不是由 $cart->add_item($_POST['id'],$_POST['qty'],$_POST['price'],$_POST['name']); 傳過來的嗎?
您說使用foreach()函式每次執行都可以取得目前這筆資料在陣列中的索引值
索引值是指每樣商品的$itemid嗎?
而將宣告的itemqtys[]陣列中的值代入暫存的陣列$item['qty']中
itemqtys[]的值又是那邊取得的呢?
cart.php 104-116中所要顯示的資料 因為$items[] = $item;將取得值回存到$items陣列中,再送回程式去顯示 所以foreach($cart->get_contents() as $item) { 就可以看作是foreach($items as $item) { 這樣嗎? 而cart.php裡的產品名稱,數量,單價,小計 <?php echo $item['info'];?> <?php echo $item['id'];?> <?php echo $item['qty'];?> <?php echo number_format($item['price']);?> <?php echo number_format($item['subtotal']);?> 裡面的$item['info'],$item['id']...跟function get_contents(){
裡面的$item['info'],$item['id']...是一樣的嗎?
為什麼還要再用foreach($cart->get_contents() as $item) {讀取一次呢?
可以麻煩您在詳細說明get_contents()跟foreach($cart->get_contents() as $item)的關連嗎?
|