2012-08-27 149 views
1

我正在嘗試在PHP/MySQL中完成這項小任務。比較數組中的條目並刪除重複項(PHP,MySQL)

我們正在收集客戶的傳真號碼(和其他數據),如果我們在我工作的公司(不在編程,不用擔心)我們的運營存在問題,我們將使用這些傳真號碼(和其他數據)。

基本上我有一個看起來像這樣的數組。

Array 
    [1] 
     [company] => "Company A" 
     [fax] => "031-558330" 

    [2] 
     [company] => "Company B" 
     [fax] => "031558330" 

    [3] 
     [company] => "Company C" 
     [fax] => "12345" 

請注意,如果刪除破折號( - ),[傳真]實際上是1和2中的重複項。

我的問題是我需要刪除[2],因爲它是[1]的重複。基本上,我試圖列出唯一的傳真號碼並打印該唯一傳真號碼的公司名稱。

到目前爲止,我已經做到了這一點:

function format_text($text,$number) 
{ 
    $text = str_ireplace(" ","",$text); 
    $text = str_ireplace("-","",$text); 
    $text = str_ireplace(",","",$text); 
    $text = str_ireplace("/","",$text); 
    $text = str_ireplace("+46","0",$text); 
    $text = trim($text); 

    return $text; 
} 


$fax_result = mysql_query("SELECT fax,company FROM beredskap GROUP BY company") or die(mysql_error()); 

for($i = 0; $fax_array[$i] = mysql_fetch_assoc($fax_result); $i++) ; 
array_pop($fax_array); 

for($i = 0; $i<count($fax_array);$i++) 
{ 
    $fn = format_text($fax_array[$i]['fax']); 
    if(!empty($fn)) { 
    echo trim($fax_array[$i]['company']) .",". $fn ."\n"; 

    } 
} 

我沒有任何線索,我應該如何比較兩個子元素(從SQL的原始數據可能在他們的差異,但是當刪除破折號和逗號複製到其他條目),然後刪除父鍵。

我真誠地希望我以正確的方式提出了這個問題。

任何人願意幫忙嗎? 謝謝!

+0

檢查這個http://stackoverflow.com/questions/11777160/comparing-array-in-php它可能有幫助全 –

+0

有問題有一個數組匹配算法,通過它你也可以刪除匹配的元素 –

+0

感謝Mayank! eggyal(下文)實際上已經將它扼殺在萌芽狀態 - 在它進入PHP之前就已經成爲了一個問題,並且帶着他/她的SQL魔法。 儘管感謝您的幫助! – mescon

回答

0

你可以做到這一點在SQL:

SELECT company, 
     TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax, 
      ' ', ''), 
      '-', ''), 
      ',', ''), 
      '/', ''), 
      '+46', '0') 
     ) AS faxno 
FROM  beredskap 
GROUP BY faxno 

注意,如果同一傳真號碼出現在針對不同公司的表格,上面的語句將選擇這些公司的一個不定。如果在這種情況下您更願意選擇某個特定的公司,請說明如何確定要選擇的公司。

還要注意,如果該公司在beredskap表中具有不同傳真號碼的記錄,則該分組將導致單個公司的結果集中有多個條目,而您的原始查詢將只能非確定地選擇一個該公司的傳真號碼。如果這不是您想要的行爲,請說明如何確定要選擇的傳真號碼。

+0

非常感謝你! 我正在嘗試這一項。 如果同一家公司出現兩次 - 這很好,因爲一家公司可能有5張不同的面孔,他們希望我們在發生緊急情況時傳真給我們。 我正在嘗試這一項,並報告回來。 – mescon

+0

你是....你是上帝嗎? 這是正確的,因爲我希望。 我很羨慕你的邏輯魔法。 非常感謝。 希望在我的情況下(和有限的智力/經驗)的其他人會看到你的優雅解決方案。在進入PHP之前解決問題。 – mescon