2012-09-13 42 views
0

使用PDO的尊重,我收到1+行,把它們變成一個這樣的數組:
PDO - 的foreach使用Array

while($row = $car_sales->fetch(PDO::FETCH_ASSOC)){   
    $car_id_array[] = $row["car_id"]; 
    $car_type_array[] = $row["car_type"]; 
    $dealer_id_array[] = $row["dealer_id"]; 
    $buyer_id_array[] = $row["seller_id"]; 
} 

我想簡單地「混合」的陣列的每一級採取行動作爲一個單元並一起沿着foreach循環,按順序提交$ q查詢。換言之,這樣的事情:

foreach($dealer_id_array as $dealer_id) { 
    if ($car_type=='new') { 
     if ($dealer_id==$buyer_id){ 
      $q = 'UPDATE car_sales SET new_cars=new_cars+1 WHERE dealer_id=:dealer_id'; 
     } else if ($dealer_id!=$buyer_id){ 
      $q = 'UPDATE car_sales SET new_cars=new_cars-1 WHERE dealer_id=:dealer_id'; 
    } else if ($car_type=='old') { 
     if ($dealer_id==$buyer_id){ 
      $q = 'UPDATE car_sales SET old_cars=old_cars+1 WHERE dealer_id=:dealer_id'; 
     } else if ($dealer_id!=$buyer_id){ 
      $q = 'UPDATE car_sales SET old_cars=old_cars-1 WHERE dealer_id=:dealer_id'; 
    } 
    $car_update = $dbhandle->prepare($q); 
    $car_update->execute(array(':dealer_id' => $dealer_id)); 
} 

環路應與第一陣列值運行,如果僅存在一個從while循環檢索到的值。如果還有更多,那麼foreach應該運行的次數與while循環中的dealer_ids一樣多,同時要遵守順序。這個例子不起作用,但我正在尋找可能的解決方案來正確地解決這個問題。你認爲最有效的方法是什麼?

回答

2

我可能會誤解你,但我相信,如果你只是替換一個循環您的foreach循環,並計算陣列的一個,你會解決你的問題:

for($i = 0; $i < count($dealer_id_array); $i++) { 

,然後簡單地使用$ I訪問您的陣列正確的項目:

$car_type_array[$i]; 

不過話說回來,我實在看不出最初的四個陣列的點擺在首位。你能不能直接在while循環中直接執行foreach循環中的代碼?

編輯:修復代碼示例

+0

很好用,謝謝pburgess。代碼應該說「for」,而不是「foreach」循環工作雖然:)我試過編輯它,但它需要更多的變化,以允許編輯,也許你可以編輯它?再次感謝! – Maverick

+0

對不起,錯字,我現在修正了這個例子。 – CodePB