1

我正在尝试在我的网站上集成 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
) 

然后我将 JSON 转换为带有 var_dump 的数组。

打印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 回答