0
我有問題喜歡標題說。 我知道這個問題的含義,但我不知道如何解決它在我的具體情況,所以我nedd你的幫助。未定義的偏移量:第55行的1
我有Item.php和Cart.php。在Item.php構造函數是:
public function __construct($id, $price, $name) {
$this->id=$id;
$this->price=$price;
$this->name=$name;
}
和Cart.php構造是:
public function __construct($items = array()) {
if(empty($items)){
$this->items=array();
$this->quantities=array();
} else {
foreach($items as $key => $value){
$this->items[]=$value;
$this->quantities[$value]++;
}
}
}
和Cart.php功能也是:
public function addItem(Item $item, $quantity = 1) {
for($i=0; $i<$quantity; $i++){
$this->items[]=$item;
$this->quantities[$item->getId()]++;
}
}
和主代碼:
$cart = new Cart();
$book = new Item(1, 59.99, 'PHP Cookbook');
$cart->addItem($book, 10);
foreach($cart->getItems() as $item) {
echo $item->getPrice(), " ", $item->getName(), " ", $cart->getQuantity($item), "<br>";
}
粗線是行:
$this->quantities[$item->getId()]++;
in addItem。
在我看來,當我說:$book = new Item(1, 59.99, 'PHP Cookbook');
PHP應該找到$id
1但他does not。最奇怪的是,結果正在我的屏幕上正確顯示。
謝謝,這幫助了我。但是我仍然無法理解你給我的解決方案。 if(isset($ this-> quantities [$ item-> getId()]))我認爲這行總是被設置的,因爲我們已經使用ID創建了一個項目,並且它已正確傳遞。我很困惑,爲什麼我需要這個isset函數? –
這個isset函數只驗證你添加的ID是否已經在數組中。如果不是,我們只設定一個值。 –
在您向我們提供的主要功能中,您尚未傳遞您的物品。因此,您第一次必須使用此ID在陣列中設置一條線。我不確定我是否清楚^^ –