2016-07-05 45 views
-3

我想访问数组的值。访问数组中的值php

Array ([0] => stdClass Object ([action_type] => comment [value] => 19074.125) [1] => stdClass Object ([action_type] => like [value] => 2179.9) [2] => stdClass Object ([action_type] => link_click [value] => 16.633202528886) [3] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_add_to_cart [value] => 451.45857988166) [4] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_complete_registration [value] => 897.60588235294) [5] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_initiate_checkout [value] => 1230.5887096774) [6] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_lead [value] => 372.17804878049) [7] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_purchase [value] => 2384.265625) [8] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_view_content [value] => 63.316597510373) [9] => stdClass Object ([action_type] => post [value] => 8477.3888888889) [10] => stdClass Object ([action_type] => post_like [value] => 193.15569620253) [11] => stdClass Object ([action_type] => unlike [value] => 76296.5) [12] => stdClass Object ([action_type] => page_engagement [value] => 15.168290258449) [13] => stdClass Object ([action_type] => post_engagement [value] => 15.274574574575) [14] => stdClass Object ([action_type] => offsite_conversion [value] => 43.39960182025)) 

我需要访问的[ACTION_TYPE]的值=> offsite_conversion.fb_pixel_purchase [值] => 2384.265625,如何获得的仅offsite_conversion.fb_pixel_purchase的值Δα

这些值来自foreach循环。您正在看到的数组是print_r($ x)。

+1

你为什么JSON编码和解码,然后...?! – deceze

+0

可能是'echo $ key [0] - > action_type;' – feeela

+0

@deceze如果我回显出$ r,我会将Array转换为字符串转换错误! –

回答

1

你试图把对象作为数组不只是工作。改用箭头运算符->来获取对象值。

foreach($r as $val){ 
    echo $val->action_type; 
} 

如果你真的希望它是一个数组,确保实现接口,给治疗对象的数组ArrayAccessCountable等,还可以扩展ArrayObject类,太能力。

而且,根据您的comment

foreach($r as $val){ 
    if ($val->action_type == 'offsite_conversion.fb_pixel_purchase') { 
     echo $val->value; 
    } 
} 
+0

但我使用原始的PHP,只是访问该对象来检索API的值,而不是使用类。也是我得到这个错误试图获得非对象的属性,所以围绕此任何解决方案? –

+0

看这里https://3v4l.org/6M2I3你的API响应必须有错误。尝试用'isset'包装它。 – Chay22

+0

谢谢你,我会试着让你知道 –

2

如果你想使用结果作为数组,而不是作为对象,使用方法:

//will return an associative array 
$x = json_decode($j, true); 

在你的代码$ x是一个对象,而不是数组,这样的foreach不正确。你应该处理你的代码,并给出你编码数组的一些原因,以便解码它,并尝试像数组那样使用它而不是对象。

如果您使用数组并删除了编码,则应该将对象更改为数组。 你可以做什么@ Chay22在本例中为阵列那样:

foreach($r as $val){ 
    if ($val[action_type] == 'offsite_conversion.fb_pixel_purchase') { 
     echo $val[value]; 
    } 
} 
+0

谢谢。但已经这样做了:) :) –