2013-07-12 1 views
1

Я пытаюсь интегрировать систему входа OpenID на свой сайт. Я использовал предоставленный код, и система входа в систему корректно возвращает мои данные и успешно хранится в PHP.Поиск через JSON для создания MySQL Insert?

Данные, возвращаемые 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] => [email protected] 
    [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) "[email protected]" ["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.

+0

С JSON, сделать массив с '$ туАггау = json_decode ($ jsonData, правда);', а затем получить доступ к данным с '$ имя = $ MyArray [ 'FAMILY_NAME'];' – Jon

ответ

1

Если у вас есть строка JSON, вы можете использовать json_decode(), который превратит ее в массив. Затем вы можете получить значение любого из свойств, используя регулярный синтаксис массива.

например.

$user_info = json_decode($json_string, true); 
$family_name = $user_info["family_name"] 
+1

Поскольку это , он не будет работать как ['json_decode'] (http://us1.php.net/manual/en/function.json-decode.php) по умолчанию возвращает [' stdClass'] (http: // php .net/ручной/EN/reserved.classes.php). Чтобы сделать его массивом, используйте 'json_decode ($ json, true);' поскольку этот 'true' будет возвращать ассоциативный массив. ^^ – Jon

+0

@ Спасибо, что ты прав. Я обновлю свой ответ –

+0

Спасибо всем за ответы. Работа над внедрением сейчас. :) – Fairplay89