【问题标题】:Debugging foreach调试 foreach
【发布时间】:2016-04-14 15:50:56
【问题描述】:

我知道这是一个转储/基本问题,但我被困住了,作为新手可以使用一些帮助。

我想要实现的目标:我想要一个 foreach 循环来获取我的用户购物车中的所有产品名称。

问题: foreach 循环在第二次迭代后停止(如果购物车中有三件东西我转储,则只显示 2 件(第一件和第二件))。

我知道 foreach 循环的作用。我认为我的问题在于我的变量名,但我尝试使用它们无济于事。

if (is_null($cart) || $cart->getSubmitted(true)) {
    $cart = new UserCart();
    //  since new cart no need to check for duplicate product quantity
    //  add product to cart
        $this->addFlash('notice', 'Creating a new cart because one didnt exist for the user before.');
}
else {

    $quantity = new Quantity();

    //If the cart is set

    $getProductsInCurrentUsersCart = $cart->getQuantities(); //All Products In Users Cart (ARRAY COLLECTION/PERSITENT COLLECTION)

    foreach ($getProductsInCurrentUsersCart as $key => $value) {

        dump($getProductsInCurrentUsersCart);
        $getProductsInCurrentUsersCart = $value->getProduct()->getName(); //SHOULD BE ALL PRODUCTS IN CART

        if ($getProductsInCurrentUsersCart === $quantity->setProduct($productBeingAddedToCart)->getProduct()->getName()) {
            $this->addFlash('notice', 'Comparission was TRUE.');
            $quantity->setQuantity($quantity->getQuantity() + 1);
        } 
        else {
            $quantity->setQuantity(1);
            $quantity->setProduct($productBeingAddedToCart);
            $this->addFlash('notice', 'Comparisson was FALSE.');
        } //ENDS IF/ELSE

    } //EXECUTING ONCE??????????


    $cart->setTimestamp(new \DateTime()); // Set Time Product was Added
    // $quantity->setQuantity(1);   // Set Quantity Purchased
    $cart->setSubmitted(false); // Set Submitted
    $cart->setUser($this->getUser());  // Sets the User ONCE
    $cart->addQuantity($quantity);    //  Add Quantity ONCE
    $quantity->setUserCart($cart);   //   Create a UserCart ONCE                
    $em->persist($productBeingAddedToCart);
    $em->persist($cart);
    $em->persist($quantity);
    $em->flush();
    $this->addFlash('notice', 'The product: '.$productBeingAddedToCart->getName().' has been added to the cart!');
}

非常感谢任何帮助!

【问题讨论】:

  • 为什么要在循环内重新定义列表$getProductsInCurrentUsersCart?我认为这可能是问题所在......

标签: php foreach


【解决方案1】:
$getProductsInCurrentUsersCart = $value->getProduct()->getName(); 

在这里,您正在重新定义循环内的列表变量。尝试使用 $getProductsInCurrentUsersCart2 并将其更改为低于此行。看看能不能解决。然后想出一个更好的名字:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-09-23
    • 1970-01-01
    相关资源
    最近更新 更多