2017-12-31 149 views
0

現在、私はmySQLiの手続き型からオブジェクト指向のスタイルに移行しようとしています。だから、Jquery Post()関数を使ってオブジェクトをPHPファイルに渡しました。以下は :PHPPHPでオブジェクトにアクセスする

JSファイル

var newemployer = { 
      newemployeremail:newemployeremail, 
      newcompanyname: newcompanyname, 
      secondpassword:secondpassword, 
     }; 
    var employerdata = JSON.stringify(newemployer); 
    console.log("in jquery: " + employerdata); 
     $.post('api/employerprocess.php', {employerdata:employerdata}, function(data){ 
      console.log(data); 
     }); 

:私は上記の中でオブジェクトにアクセスすることができますが、私はできません

$employerdata = $_POST['employerdata']; 

$data = json_decode($employerdata, true); 
print_r($data['newemployeremail']); 

:私はこれを持っています->演算子を使用してオブジェクト内の値にアクセスするようです。

Trying to get property of non-object 

私は->演算子を使用したい:

$accessed = $data->newemployeremail; 
var_dump($data->newemployeremail); 
echo $data->newemployeremail; 
echo $accessed; 
echo 'Hi'; 

$アクセス変数、のvar_dump、オブジェクトごと歩留まりこのエラーのエコー、最後の2つのステートメントは最後にNULLを持っています。理解できません。 ->演算子を使用してオブジェクトの値にアクセスできないのはなぜですか?

+0

'json_decode($ employerdata、true)を、2番目のパラメータとしては' true'と '、json_decodeは、配列を返します – vnt

答えて

0

の第2引数としてtrueは、 "返されたオブジェクトは結合配列に変換されます"を意味します。したがって、オブジェクトではなく配列を受け取っています。

あなたはどちらかの配列の構文を使用してオブジェクトまたはアクセスの特性を受け取るために第二引数にfalseを渡す必要があります:$accessed = $data['newemployeremail'];

0

あなたは

$data = json_decode($employerdata, true); 
// the true param in json_decode mean that teh result is converted in associative array 
echo $data['newemployeremail']; 

はそうあなたが、配列ではなくオブジェクトを持つ連想配列として値を代入している

その後、真例えばずにJSONデコードを割り当ててみてください。

$data = json_decode($employerdata); 
echo $data->newemployeremail; 
関連する問題