首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法访问对象属性php

无法访问对象属性php
EN

Stack Overflow用户
提问于 2016-11-23 13:07:59
回答 3查看 72关注 0票数 0

我在奖励-object.php文件中有以下对象:

代码语言:javascript
复制
<?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循环中访问它的属性:

代码语言:javascript
复制
<?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来获取奖励-object.php文件中的对象。

现在,如果我替换这一行:

代码语言:javascript
复制
     $test = json_encode($rewards_obj_data[$IdFromApi]->reward_id);
    echo $test;

通过以下方式:

代码语言:javascript
复制
     $test = json_encode($rewards_obj_data[$IdFromApi]);
    echo $test;

然后,它获取的对象,没有问题!问题在于我试图访问对象属性(如reward_title )。这里,它返回一个null值。我一直在玩json_encode的角色,因为我认为这可能是问题所在,但到目前为止,我所尝试的一切都没有起作用。知道我哪里出了问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-23 13:12:31

$rewards_obj_data是一个数组,内容也是一个数组。但是你试着像一个对象一样去访问它。它是一个数组,不是一个对象。这将是正确的方法:

代码语言:javascript
复制
$rewards_obj_data[$IdFromApi]['reward_id']
票数 1
EN

Stack Overflow用户

发布于 2016-11-23 13:12:10

我没有看到物体,而是二维数组。以$rewards_obj_data[$IdFromApi]['reward_title'];的形式访问您的值

票数 1
EN

Stack Overflow用户

发布于 2016-11-23 13:24:18

数组不是对象。在PHP中,数组可能存在整数键和字符串键,也许这就是混淆。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40765415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档