1

PHPSDKを使用せずにFacebookアプリを使用してユーザーの友達リストを返そうとしています。認証コードを使用せずに、ユーザー名や性別などを返すことができました。私は今、ユーザーの友達である名前のリストを返そうとしていますが、これまでに管理したのは配列を印刷することだけです。ユーザーの名前や性別などとは異なるレイアウトの名前しか印刷できないようです。私は次のことを行うことでなんとかエコーしました:

$user->name

しかし、友達リストでそれを試してみると、それは機能せず、何もエコーしません。誰かが私がこれを行う方法を知っているかどうか疑問に思っていましたか?

print_rを使用すると、次のようになります。

Array(
[0] => Array ( [name] => Friend's name [id] => x )
[1] => Array ( [name] => Friend's name [id] => x )
[2] =>....)

すべての友達がリストされるまで。


 { "name": "Name", 
    "hometown": {
      "id": "Hometown_id", 
      "name": "Hometown"
    }, 
    "id": "Friend_id" }

上記はそれぞれの配列の構造です。潜在的な問題は、すべての人が故郷のセットを持っているわけではないということだと思います。これが、forEachエラーを受け取る理由かもしれません。

4

2 に答える 2

1

その配列構造を考えると、必要なものを取得するのは(phpで)非常に簡単です。配列に関するphpのマニュアルを読むことをお勧めします。

次のようなものを試してください。

foreach ($array as $inner_array) {
    echo $inner_array['name'] . "<br />";
}

それとは別に、それは...

echo $your_array[0]['name'];
echo $your_array[1]['name'];

などなど4番目。

アップデート:

あなたが今探しているのは配列ではなく、javascriptオブジェクトです。これは、JSON:JavascriptObjectNotationと呼ばれます。

配列として解釈するには、特別なパーサーが必要ですjson_decode()。これは、5.2.0以上のphpに付属しています。配列を連想させるには、2番目のパラメーターであるブール値を渡す必要がありますtrue。デフォルトはfalseそれ以外です。使用例:

$json = '{ "name": "Name", 
    "hometown": {
      "id": "Hometown_id", 
      "name": "Hometown"
    }, 
    "id": "Friend_id" }';

$json_arr = json_decode($json,true);

foreach ($json_arr as $key => $var) {
    if (!is_array($var)) {
        if ($key == 'name') {
            echo $var . "<br />";
        }
    }
}

アップデート2:

foreach ($json_arr as $key => $var) {
    if (!is_array($var)) {
        if ($key == 'name') {
            echo "Name: " . $var . "<br />";
        }
    }
    else {
        if ($key == 'hometown') {
            echo "Hometown: " . $var['name'] . "<br />";
        }
    }
}

上記はあなたが必要なことをするはずです。

于 2013-02-10T05:26:04.170 に答える
0

Facebookから特定のデータをクエリするための最良の方法は、FQLです。https://developers.facebook.com/docs/technical-guides/fql/をチェックして、それがあなたが探しているものであるかどうか私に知らせてください。

私が提供したリンクのサンプルは、アクティブなユーザーのすべての友達を取得します。サンプルをスターターとして使用する場合(有効なアクセストークンとともにアプリのすべての適切な情報を入力した後)、サンプルが表示されている領域に移動し、次の行に// run fql query変更uid2します。name

fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()

スクリプトの最後に以下を追加すると、すべての友達の名前がという配列に入力されます。$names

$r = $fql_multiquery_obj['data'][0]['fql_result_set'];
foreach ($r as $u)
{
    $name[count($name)] = $u['name'];
}

それはあなたがやろうとしていることをするのに役立ちますか?お知らせ下さい :)

于 2013-02-10T05:13:40.327 に答える