2016-11-23 7 views
0

にアクセスすることができません:私は、forループ別にそのプロパティにアクセスしようとしています私は報酬-object.phpファイル内で次のオブジェクト持つオブジェクトのプロパティのphp

<?php 

$rewards_obj_data = array(
    array(
    'reward_id' => 0, 
    'reward_mile_text' => "mile 0", 
    'reward_title' => "Tag Connected Watch", 
    'reward_img' => "../assets/rewards/rewards-1.jpg", 
    'reward_apr' => "Representative 18.9% APR (variable)", 
    'reward_cta_url' => "rewards/claimReward.jsp&rewardID=0"/* + auth cookie details */, 
    ), 
    array(
    'reward_id' => 1, 
    'reward_mile_text' => "mile 1", 
    'reward_title' => "Tag Connected Watch", 
    'reward_img' => "../assets/rewards/rewards-1.jpg", 
    'reward_apr' => "Representative 18.9% APR (variable)", 
    ),  
    array(
    'reward_id' => 2, 
    'reward_mile_text' => "mile 2", 
    'reward_title' => "Tag Connected Watch", 
    'reward_img' => "../assets/rewards/rewards-1.jpg", 
    'reward_apr' => "Representative 18.9% APR (variable)", 
    ),  
    array(
    'reward_id' => 3, 
    'reward_mile_text' => "mile 3", 
    'reward_title' => "Tag Connected Watch", 
    'reward_img' => "../assets/rewards/rewards-1.jpg", 
    'reward_apr' => "Representative 18.9% APR (variable)", 
    ),  
    array(
    'reward_id' => 4, 
    'reward_mile_text' => "mile 4", 
    'reward_title' => "Tag Connected Watch", 
    'reward_img' => "../assets/rewards/rewards-1.jpg", 
    'reward_apr' => "Representative 18.9% APR (variable)", 
    ),  
); 

?> 

を:

<?php 
    require '../api/rewards-object.php'; 

    // in between here I make some API calls to retrive an array of objects which I have named $rewardsAPIResponse 

    // parse http request 
    $decode_rewardsAPIResponse = json_decode($rewardsAPIResponse); 

    /* for loop */ 
    foreach($decode_rewardsAPIResponse as $key=>$value){ 

     $IdFromApi = $value->rewardID; 

     $test = json_encode($rewards_obj_data[$IdFromApi]->reward_title); 
     echo $test; 
    }; 
?> 

APIから返されたオブジェクトのIDを使用して、rewards-object.phpファイル内のオブジェクトを取得することです。

 $test = json_encode($rewards_obj_data[$IdFromApi]->reward_id); 
    echo $test; 

:私はこの行を置き換える場合は現時点で

 $test = json_encode($rewards_obj_data[$IdFromApi]); 
    echo $test; 

そして、それは、オブジェクトには問題を取得していません!問題は、reward_titleなどのオブジェクトプロパティにアクセスしようとしていることにあります。ここでは、それは私にnullの値を返します。私は問題がどこにあるのだろうと思っているので、私はjson_encodeの部分で遊んでいますが、これまでに試したことのすべてがうまくいきません。私が間違っているアイデアは?

+6

オブジェクトではなく、その配列です。あなたは 'JSON_FORCE_OBJECT'を使いたいかもしれません – Xorifelse

+1

JavaScriptとは違って、PHPの配列はオブジェクトではなく、' [] '構文をまったく共有しません。 –

答えて

1

$ rewards_obj_dataは配列なので、コンテンツにもアクセスします。しかし、あなたはオブジェクトのようにアクセスしようとします。その配列、オブジェクトではありません。 これは正しい方法のようになります。

$rewards_obj_data[$IdFromApi]['reward_id'] 
1

オブジェクトは表示されませんが、2次元配列です。 $rewards_obj_data[$IdFromApi]['reward_title'];

0

あなたの配列はオブジェクトではありません。 PHP配列には整数と文字列キーが存在する可能性がありますが、おそらくそれは混乱です。

echo $rewards_obj_data[0]['reward_id']; // 0 

foreach($rewards_obj_data as $value){ 
    echo $value['reward_id']; 
} 

// Convert array to to string, converting arrays to objects. 
$json = json_encode($rewards_obj_data, JSON_FORCE_OBJECT); 

// Convert json to a PHP object. 
$data = json_decode($json); 

foreach($data as $obj){ 
    echo $obj->reward_id; 
} 
関連する問題