繁体   English   中英

无法访问对象属性php

[英]Unable to access object property php

我在rewards-object.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)",
    ),    
);

?>

我试图在另一个for循环中访问其属性:

<?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部分,因为我认为这可能是问题所在,但到目前为止,我尝试过的所有方法均无效。 有什么想法我做错了吗?

我看不到对象,而是二维数组。 $rewards_obj_data[$IdFromApi]['reward_title'];访问您的值$rewards_obj_data[$IdFromApi]['reward_title'];

$ rewards_obj_data是一个数组,内容也是如此。 但是您尝试像访问对象一样访问它。 它是一个数组,而不是对象。 这是正确的方法:

$rewards_obj_data[$IdFromApi]['reward_id']

您的数组不是对象。 在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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM