2016-06-15 6 views
-3

私はこれらのforeachループに問題があります。出力が正しくない場合は、それらを入れ子にします。以下のコードでは、事がデータベースに複数回追加されます。実際には2つの条件でforeachループが必要ですが、これが可能かどうかを知っていますか? DBに追加された商品と数量の両方が必要です。PHP - foreachループ複数の条件ですか?

$keys = array_keys($_SESSION['meal1']); 

    foreach ($_SESSION['meal1'] as $quantity) { 

     foreach ($keys as $products) {      

$query1 = sprintf("INSERT INTO `maaltijdproducten`(`meal_id`, `product_id`, `quantity`, `schema_id`) VALUES ('1' ,'$products', '$quantity', '$schemaid')"); 
       $result1 = mysql_query($query1); 
      } 
     } 

セッションのmeal1は 'のようです:

array (size=2) 
    1 => int 1 
    7 => int 6 
+0

あなたがブレークを使用することができます。 foreachループにif文を1つ追加します。 –

+1

期待される結果は何ですか...? – deceze

+0

予想される結果は両方ともproduct_idであり、数量はデータベースと同じ行に追加されます@deceze – Mette

答えて

2

あなたは、配列が同じであれば2回反復する必要はありません。製品は、インデックスと数量が値です。

$keys = array_keys($_SESSION['meal1']); //it contains the keys in an an array 

foreach ($_SESSION['meal1'] as $quantity) { //it iterates the array and the value of each key is in $quantity. 

私はあなたがおそらくこれはあなたが探しているものはおそらくです

foreach ($_SESSION['meal1'] as $current_key => $quantity) { 
//$current_key -> product as you mentioned 
+0

ありがとうございます! – Mette

0

が必要だと思う:

$meals = $_SESSION['meal1'];  

foreach($meals as $quantity => $product) { 
    $query1 = sprintf("INSERT INTO `maaltijdproducten`(`meal_id`, `product_id`, `quantity`, `schema_id`) VALUES ('1' ,'$product', '$quantity', '$schemaid')"); 
      $result1 = mysql_query($query1); 
}