2011-08-19 50 views
2

我有2個查詢,我通過做一個whyle循環取回一些數據。php,如何比較不同查詢的2個數組?

第一個查詢,如果我做print_r($final_key);我得到:

hey1 
hey2 
hey3 

從第二個,如果我這樣做print_r($final_key2);我得到:

hey1 test 
hey2 test1 
hey3 

什麼,我試圖做的是比較2陣列和檢查與 匹配的單詞,我不能直接從數據庫中做到這一點

任何想法?

感謝

編輯: 這裏是我的查詢1:

while ($keywords = mysql_fetch_array($keys1, MYSQL_ASSOC)){ 
    foreach ($keywords as $key) { 
     $plus = '+'; 
     $pos = strripos($key, $plus); 
      if ($pos === false) { } else { 
       $clean_plus = preg_replace("/[\+]/", '', $key); 
       $final_key = str_replace("'", "", $clean_plus); 
       print_r($final_key); 
       echo '<br>'; 
      } 


    } 
} 

,第二個:

<?php 
while ($keywords = mysql_fetch_array($keys)){ 
if($keywords['kword'] != ''){ 
    echo $keywords['kword']; 
} } ?> 

我是tryingtØ比賽$final_key$keywords['kword'];

+0

你能給我們兩個數組的樣本嗎?即:'array(「one」=> 1,「two」,「three」)' – Ryre

+0

所以你想要一個返回'hey3'的函數,因爲這是兩個數組中唯一相同的單詞嗎? –

+0

你*真的*不能只是做一個數據庫連接? –

回答

2

使用array_intersect它返回一個包含兩個數組中值的數組。

如果您想要密鑰匹配,請使用array_intersect_assoc

+0

我得到arning:array_diff()[function.array-diff]:參數#2不是數組 – Patrioticcow

+0

你需要更清楚你的變量類型是什麼。你通過說你有兩個數組來開始這個問題。在編輯結束時,看起來您正在比較兩個字符串。這是什麼? –

+0

對不起,我想他們是字符串 – Patrioticcow

0

循環在一個數組上,並且在每次迭代中,循環另一個。

<?php 
foreach($array as $item){ 
    foreach($array2 as $item2){ 
     if($item == $item2){ 
      $array3[] = $item; 
     } 
    } 
} 
?> 

這將創建一個匹配數組,然後您可以按照您的要求進行操作。

+0

看起來像root45有解決方案...哎呀。 – AVProgrammer

4

使用array_intersect

array_intersect($array1, $array2, ...); 

array_intersect文檔:

array_intersect()返回一個包含存在於所有的參數的ARRAY1的所有值的數組。請注意,鍵被保留。

+0

我得到了arning:array_diff()[function.array-diff]:參數#2不是數組 – Patrioticcow

+0

'array_intersect'對數組有效;如果你想查看一個數組中是否存在字符串,可能'array_search'會是一個更好的函數,但是如果是這種情況,你的問題還不清楚。 – chesles