1

Web サイトに OpenID ログイン システムを統合しようとしています。提供されたコードを使用しましたが、ログイン システムは適切にデータを返し、PHP に正常に保存されています。

OpenID から返されるデータ:

Array
(
    [family_name] => Doe
    [name] => John Doe
    [account_type] => BUSINESS
    [given_name] => John
    [address] => Array
        (
            [postal_code] => 12345
            [locality] => Test
            [region] => NE
            [country] => US
            [street_address] => 123 Main Street
        )

    [verified_account] => true
    [language] => en_US
    [zoneinfo] => America/Chicago
    [locale] => en_US
    [phone_number] => 5553891234
    [email] => johndoe@test.com
    [account_creation_date] => 2008-03-06
    [birthday] => 2000-01-01
    [age_range] => 18-25
) 

次に、var_dump を使用して JSON を配列に変換しています。

var_dump の後にデータを出力すると、私のデータは次のようになります。

array(14) { ["family_name"]=> string(9) "Doe" ["name"]=> string(13) "John Doe" ["account_type"]=> string(8) "BUSINESS" ["given_name"]=> string(3) "John" ["address"]=> array(5) { ["postal_code"]=> string(5) "12345" ["locality"]=> string(5) "Test" ["region"]=> string(2) "NE" ["country"]=> string(2) "US" ["street_address"]=> string(32) "123 Main Street" } ["verified_account"]=> string(4) "true" ["language"]=> string(5) "en_US" ["zoneinfo"]=> string(15) "America/Chicago" ["locale"]=> string(5) "en_US" ["phone_number"]=> string(10) "5553891234" ["email"]=> string(20) "johndoe@test.com" ["account_creation_date"]=> string(10) "2008-03-06" ["birthday"]=> string(10) "2000-01-01" ["age_range"]=> string(5) "18-25" }

今、私の質問は(そしてこれが私が立ち往生している場所です)配列をループしてデータだけを引き出すにはどうすればよいですか?ユーザー アカウントを作成するためのデータから MySQL 挿入を作成しようとしています。

ユーザーの姓が配列に格納される最初のものになるとは思わないでください。配列を簡単に検索してデータのみを返す方法はありますか?

私は print_r と他のいくつかのメソッドを見てきましたが、すべてが["family_name"]=> string(9) "Doe"代わりに返されるようDoeです.

4

1 に答える 1

1

JSON 文字列がある場合は、それを配列に変換するjson_decode()を使用できます。その後、通常の配列構文を使用して、任意のプロパティの値を取得できます。

例えば。

$user_info = json_decode($json_string, true);
$family_name = $user_info["family_name"]
于 2013-07-12T20:25:43.400 に答える