PHP 5.6 - 使用 if 语句更新循环修改对象

PHP 5.6 - Modify object in loop with if-statements updates latest only

在我的系统中,汽车和产品类别是具有 EAN 代码的组合。每辆车都可以有多个具有不同 EAN 代码的产品类别,我想使用属于该特定组合的 EAN 代码。我使用 foreach 循环遍历所有汽车并获得正确的 EAN 代码,并将其放入产品类别的 Arraylist 中,但每当我 运行 我的代码时,只有最新的 EAN 代码将用于所有产品类别那辆车有。

例如: 汽车 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);