2017-08-31 25 views
2

URLからjsonデータを解析しようとしましたが、cURLを使用してjson_decodeを使用してオブジェクトにアクセスしましたが、失敗しました。私はすでにアクセス方法を探していますが、失敗しました。JSON文字列をPHP変数に変換するには?

これは私が問題を解決できることを期待して訪れたリンクです。

http://www.dyn-web.com/tutorials/php-js/json/decode.php 
https://stackoverflow.com/questions/12429029/php-get-values-from-json-encode 
https://stackoverflow.com/questions/20193575/fetch-json-data-using-php 
https://stackoverflow.com/questions/12429029/php-get-values-from-json-encode 
https://stackoverflow.com/questions/4433951/decoding-json-after-sending-using-php-curl 

これはvar_dump($ obj)の結果です。

array(1) { 
    ["login"]=> 
    array(2) { 
    ["error"]=> 
    bool(false) 
    ["user"]=> 
    array(5) { 
     ["br_code"]=> 
     int(0) 
     ["mem_id"]=> 
     int(202) 
     ["username"]=> 
     string(8) "johndoe" 
     ["email"]=> 
     string(33) "[email protected]" 
     ["created_at"]=> 
     string(19) "2017-08-07 15:35:39" 
    } 
    } 
} 

と、これは私のPHPコード

<?php 
session_start(); 

$ch = curl_init('http://localhost/sample/login.php'); 

$username= $_SESSION["USERNAME"]; 
$password= $_SESSION["PASSWORD"]; 

$credentials = [ 
    'username' => $username, 
    'password' => $password 
]; 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $credentials); 
curl_setopt($ch, CURLOPT_USERNAME, "{$username}:{$password}"); 
// execute! 
$response = curl_exec($ch); 
// close the connection 
curl_close($ch); 

$obj= json_decode($response, true); 

// echo $obj; // Notice: Array to string conversion in 

// echo $obj[0]; // Undefined offset 

// echo $obj->user; //Trying to get property of non-object in 

var_dump($obj); 



?> 
+0

私はすでにエコーを試みましたが、Arrayを文字列変換に返します。 – Novice

答えて

3

はそう

例えば、配列の配列を思われます。username

var_dump($obj['login']['user']['username']); 

というように、他人のためには、

値のために
$my_username = $obj['login']['user']['username']); 
1

あなたのデータには、PHPのオブジェクトはただでアクセス をするアレイされていないため、

$user = $obj['login']['user']; 
//to print email 
echo $user['email']; 
//to print username 
echo $user['username']; 
//so on 
0

json_decodeは、あなたがそのエラーを取得する多次元配列 にJSON文字列をデコードし、ユーザーの詳細を取得するには、次の試みるlogin配列であります[]あなたは大丈夫です

$obj['user']['field_requested'] 
1

あなたはjson_decode(真$応答を、)行うと、あなたは本当のように、第2のパラメータを使用している場合は、それが連想配列にそれをデコードします。

あなたのvar_dumpは配列であるとも言います。ユーザーのアレイにアクセスしたい場合は、配列

を反対しないように、あなたは、$ OBJにアクセスする必要があります。

$obj['login']['user'] 

ユーザー名/ br_codeアクセスしたい場合:

$obj['login']['user']['username']; 
$obj['login']['user']['br_code']; 

more info about json_decode

関連する問題