这是我的目标:
$reportdata = stdClass Object
(
[1] => stdClass Object
(
[reportname] => reportname1
[reportviews] => 20
[reportpath] => reports/reportname1
[thumbnailurl] => reports/thumbnailurl/thumbnailurl1.jpg
[description] => Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
)
[2] => stdClass Object
(
[reportname] => reportname2
[reportviews] => 20
[reportpath] => reports/reportname2
[thumbnailurl] => reports/thumbnailurl/thumbnailurl2.jpg
[description] => Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
)
)
我正在尝试使用$reportdata[1]['reportviews']
访问各个值但我收到错误
“不能使用stdClass类型的对象作为数组”。
如何访问reportname
和reportviews
?
答案 0 :(得分:8)
像这样:
$reportdata->{1}->reportviews
答案 1 :(得分:2)
试试这个
$reportdata=json_decode(json_encode($reportdata),true);
然后使用此
$reportdata[1]['reportviews']
您不会收到任何错误。
答案 2 :(得分:0)
$reportdata->{'1'}->reportname;
$reportdata->{'1'}->reportviews;
答案 3 :(得分:0)
您可以像其他人提到的那样访问对象的属性但想要提供替代选项。
get_object_vars - 获取给定对象的属性
数组get_object_vars(object $ object)
http://php.net/manual/en/function.get-object-vars.php
$arrReportData = get_object_vars($reportdata);
echo $arrReportData[1]->reportviews;
请注意,这是非递归的,因此在您的情况下,您将获得一个对象数组。
答案 4 :(得分:0)
您尝试访问元素的方式:
$reportdata[1]['reportviews']
建议主要对象是关联数组。如果您的对象声明如下,则此代码将起作用:
$reportdata = array(
'1' => array (
'reportname' => 'reportname1',
'reportviews' => '20',
'reportpath' => 'reports/reportname1',
'thumbnailurl' => 'reports/thumbnailurl/thumbnailurl1.jpg',
'description' => 'Lorem ipsum dolor.'
),
:
);
但是当使用stdClass Object
时,您可以访问变量中指定的对象属性,如下所示:
$atr1 = '1'; $atr2 = 'reportviews';
print $reportdata->$atr1->$atr2;
或使用表达式表示法:
print $reportdata{'1'}{'reportviews'};