0

2人のFacebookユーザーが友達かどうかを判断しようとしています。私は両方のユーザーのuserIdを持っているので、次を使用して一方の友達のリストを取得できます。

   $friends = $facebook->api('/me/friends');

Userオブジェクトのドキュメントには、IDは「文字列」であると記載されています。問題は、友達リストが返されるときに、それがSTRINGとして順序付けられておらず、NUMBERとして順序付けられていることです。たとえば、次のように表示されます。

{"name":"AAAAA","id":"200000"},
{"name":"XXX YYY","id":"700000"},
{"name":"BBBB EEEE","id":"1200000"},
{"name":"OOOO GGGGG","id":"1200001"},
{"name":"PPPPP EEEEEE","id":"130000"},
{"name":"CCCCC CCCCCC","id":"100002999999999"},
...

リストでuserIdを見つけたい場合、それが「数値」であれば、IDを数値に変換して、バイナリ検索を実行できます。

ただし、一部のuserIdは非常に大きいため、64ビットintである必要があると思われます。また、私は32ビットのLinuxシステムで実行しているため、PHPは64ビットのintをサポートしていません。

つまり、これは、このリストを順番に繰り返すための最良の方法を意味するのでしょうか、それともuserIdを見つけるためのより効率的な方法があるのでしょうか。

4

1 に答える 1

2

FQLを使用してみてください。それはあなたのニーズに役立つようです:

SELECT uid1, uid2 FROM friend WHERE uid1 = me() AND uid2 = ...

Facebookのドキュメント-FQLフレンドテーブル

結果が得られれば、この2人のユーザーは友達であることがわかります。

于 2012-08-10T21:50:31.553 に答える