Laravel foreach只返回数组中的最后一个键

时间:2017-04-07 18:03:57

标签: laravel

我的阵列:

array:2 [▼
  0 => array:2 [▼
    "Product_ID" => "2"
    "Product_Thumbnail" => "p38.jpg"
  ]
  1 => array:2 [▼
    "Product_ID" => "4"
    "Product_Thumbnail" => "p41.jpg"
  ]
]

我的功能:

 public function add(Request $request, $id) {
        $product_compare = Product::where('Product_ID', $id)->first();
        $product = [];
        $product['Product_ID'] = $id;
        $product['Product_Thumbnail'] = $product_compare->Product_Thumbnail;

        if (Session::has('product_compare')) {
            foreach (Session::get('product_compare') as $item) {
                $check= $item['Product_ID'];
            }
            if (!($check == $id)) {
                $request->session()->push('product_compare', $product);
            }
        } 
        else {

            $request->session()->push('product_compare', $product);
        }
        return back()->withInput();

    }

函数中的Foreach循环不会打印出includes数组中的所有值。它只返回数组中的最后一个键。

1 个答案:

答案 0 :(得分:0)

看起来您在使用之前会覆盖$check变量。

你必须将if语句放在foreach循环中,如下所示:

foreach (Session::get('product_compare') as $item) {
   $check= $item['Product_ID'];
   if (!($check == $id)) {
       $request->session()->push('product_compare', $product);
   }
}