从PHP FQL结果中删除重复对

时间:2011-02-01 12:27:09

标签: php facebook facebook-fql

我正在使用以下Facebook FQL查询来获取朋友之间的关系:

SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1 = $myUid) AND uid2 IN (SELECT uid2 FROM friend WHERE uid1 = $myUid)

结果是我的朋友之间的无限关系的两栏表,例如:

UID1 UID2
UID2 UID3
UID2 UID1
UID3 UID5

在上面的示例中,关系(UID1,UID2)出现两次,一次为(UID1,UID2),一次为(UID2,UID1)。两种关系都是等价的。我希望删除这些副本,只留下其中一个。

因此,使用PHP,删除此类重复项的最佳方法是什么?感谢您的任何想法或指示。

Best,Andrej

2 个答案:

答案 0 :(得分:2)

简单。

添加

AND uid1 < uid2

查询。

答案 1 :(得分:1)

如果它必须在PHP中,并且结果集不会太长:

class UniqueChecker {
  private $aMap = array();

  public function mustAddPair($sItem1, $sItem2) {
    if (empty($this->aMap["$sItem1 $sItem2"]) && empty($this->aMap["$sItem2 $sItem1"])) {
      $this->aMap["$sItem1 $sItem2"] = true;
      return true;
    }
    else
      return false;
  }

}