2015-01-15 93 views
-1

問題:當$ Current與所有$ subs不匹配時插入$ Current。插入If Ifse在Foreach數組PHP

foreach ($array1 as $index=>$Current){ 
     foreach ($array2 as $key=>$subs){ 
      echo "\nCurrent: ".$Current; //get current 
      echo "\nsubs: ".$subs; //get subs 
      if ($Current== $subs){ 
       echo "\n++++++\n"; 
      } else{ 
       echo "\n=====\n"; 
       $sql = "INSERT INTO `#__table` (user_id, cat_id, subs) VALUES (".$userid.",".$other_array [$index].",".$Current.")"; 
       echo "\n".$sql; 
      } 
     } 

    } 

實際的輸出是:

Current: 1 
subs: 9 
===== 

INSERT INTO `#__table` (user_id, cat_id, subs) VALUES (1,1,1) 
Current: 1 
subs: 11 
===== 

INSERT INTO `#__table` (user_id, cat_id, subs) VALUES (1,1,1) 
Current: 1 
Subs: 1 
+++++ 

我預期的輸出應該比較當前後執行插入SQL和潛艇是不同的。這可能是這樣的:

Current: 1 
subs: 9 
===== 

Current: 1 
subs: 11 
===== 

Current: 1 
Subs: 1 
+++++ 

// EXECUTE THIS AFTER COMPARING ALL Current and subs *** 
INSERT INTO `#__table` (user_id, cat_id, subs) VALUES (1,1,Current) 

那麼我該如何編寫foreach循環?或者我不應該使用foreach?

請幫忙。謝謝。

+0

你可能要重新考慮你的問題的話,我不知道你在問什麼。爲什麼這是預期的產出? – castis 2015-01-15 17:08:43

+0

@castis在完成2個數組的所有比較之後,我需要執行insert sql。如果遵循實際輸出,則會多次插入相同的記錄。 – oook 2015-01-15 17:10:44

回答

0

如果我理解正確,您希望循環使用$ Current,並且$ subs中不存在$ Current,那麼您希望它插入到數據庫中。

嘗試使用in_array功能,像這樣:

foreach ($array1 as $index=>$Current){ 
    if (!in_array($Current, $array2)) 
     echo "\n=====\n"; 
     $sql = "INSERT INTO `#__table` (user_id, cat_id, subs) VALUES (".$userid.",".$other_array [$index].",".$Current.")"; 
     echo "\n".$sql; 
    } 
} 
+0

嗨!謝謝你回覆!我需要插入$ Current!= $ subs .. – oook 2015-01-15 17:21:02

+0

啊,對不起,我以爲我已經正確地解釋了這個問題。爲了澄清,你希望它遍歷所有的$ Current和所有的$ subs,並且如果它找到一個匹配,最後做一個插入? – RToyo 2015-01-15 17:29:34

+0

我想通過$ Current循環和所有$ subs,如果match->什麼也不做; else->在最後插入$ Current。你可以參考我的期望輸出,我比較$ Current到所有$ subs,最後我插入$ Current。 – oook 2015-01-15 17:32:01