2012-12-10 94 views
1

我有一個PHP的問題,我想提出如下結果:如何刪除數據重複在PHP?

123 *托馬斯·蒂凡尼·凱瑟琳·恩恩*加布裏埃爾·伊麗莎白·阿吳*

但考慮如下結果:

123 * 123 * 123 * 123 * 123 * thomas * thomas * thomas * thomas * tiffany * tiffany * tiffany * tiffany * Catherine * Catherine * Catherine * Catherine * Catherine * EnEn * EnEn * EnEn * EnEn * Gabriel * Gabriel * Gabriel * Gabriel * Elizabeth * Elizabeth * Elizabeth * Elizabeth * Ah Goh * Ah Goh * Ah Goh * Ah Goh * Ah Goh *

任何人都可以告訴我如何解決這個問題?謝謝。

下面是代碼:

$name = $_POST['Username']; 

$data = mysql_query("SELECT * FROM User");     
$data1 = mysql_query("SELECT Friends.responseRequest FROM User INNER JOIN Friends ON 
      User.username = Friends.sentRequest WHERE User.username = '$name' AND  Friends.status = 'approved'")or die(mysql_error());; 

$data2=mysql_query("SELECT Friends.sentRequest FROM User INNER JOIN Friends ON User.username = Friends.responseRequest WHERE User.username = '$name' 
       AND Friends.status = 'approved'"); 


    $user = array(); 
    while($info1 = mysql_fetch_array($data)){ 
    array_push($user, $info1[username]); 
    } 

$friend =array(); 
    $getFriend1 = mysql_query("SELECT * FROM Friends WHERE sentRequest='$name' AND status='approved'"); 
    $getFriend2 = mysql_query("SELECT * FROM Friends WHERE responseRequest='$name' AND status='approved'"); 

    while($info2 = mysql_fetch_array($getFriend1)){ 
    array_push($friend , $info2[responseRequest]); 
    } 

    while($info3 = mysql_fetch_array($getFriend2)){ 
    array_push($friend , $info3[sentRequest]); 
    } 

    $newFriend = array_unique($friend); 
    $newUser=array(); 
    for($i=0;$i<count($user);$i++){ 
     for($j=0;$j<count($newFriend);$j++){ 
      if($newFriend[$j]!=$user[$i]&&$user[$i]!=$name){ 
       echo $user[$i]."*"; 
      } 
     } 

    } 

    mysql_close(); 
+0

我沒有看太多的代碼。但我有一種感覺,你可以在你的SQL Query中使用DISTINCT來減少邏輯複雜度。 – Lenin

+3

這段代碼很難把握。你應該真正做的是仔細研究數據庫表結構,並開始處理一個能夠獲取所需信息的單個查詢。 – eis

回答

4

一種簡單的方法(不一定是最好的)是將結果分成數組,消除重複,然後再次加入部分。

<?php 
$str = '123*123*123*123*123*thomas*thomas*thomas*thomas*Tiffany*Tiffany*Tiffany*Tiffany*Catherine*Catherine*Catherine*Catherine*Catherine*EnEn*EnEn*EnEn*EnEn*Gabriel*Gabriel*Gabriel*Gabriel*Elizabeth*Elizabeth*Elizabeth*Elizabeth*Ah Goh*Ah Goh*Ah Goh*Ah Goh*Ah Goh*'; 
$aux = array_unique(explode('*', $str)); 
$str = implode('*', $aux);