[英]PHP 5.6 - Modify object in loop with if-statements updates latest only
在我的系統中,汽車和產品類別是具有 EAN 代碼的組合。 每輛車都可以有多個具有不同 EAN 代碼的產品類別,我想使用屬於該特定組合的 EAN 代碼。 我使用 foreach 循環遍歷所有汽車並獲得正確的 EAN 代碼,並將其放入它擁有的產品類別的 Arraylist 中,但是每當我運行我的代碼時,只有最新的 EAN 代碼將用於汽車擁有的所有產品類別.
例如: Car 1 有 3 個類別:cat1 具有 EAN 123,cat2 具有 EAN 324,cat3 具有 EAN 543,但是當我檢查汽車 1 類別時,所有 EAN 代碼都設置為 543。
我正在談論的循環:
foreach($cars as $car) {
if($car->Cat1 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 127, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat1->add($car);
}
if($car->Cat2 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 126, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat2->add($car);
}
if($car->Cat3 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 781, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat3->add($car);
}
if($car->Cat4 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 2924, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat4->add($car);
}
if($car->Cat5 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 993, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat5->add($car);
}
if($car->Cat6 == 1) {
$ean = koppelEan::get()->filter( array('ProductID' => 5195, 'AutoTypeID' => $car->ID))->first();
$car->EAN = $ean->EAN;
self::$Cat6->add($car);
}
}
經過一些深入的研究,我發現了它
$tempCar = clone $car;
$ean = koppelEan::get()->filter( array('ProductID' => 993, 'AutoTypeID' => $car->ID))->first();
$tempCar->EAN = $ean->EAN;
self::$cat1->add($tempCar);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.