簡體   English   中英

如何在php中訪問stdclass對象?

[英]how to access stdclass object in php?

這是我的目標:

$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類型的對象作為數組”。

如何訪問reportnamereportviews

像這樣: $reportdata->{1}->reportviews

試試這樣吧

 $reportdata=json_decode(json_encode($reportdata),true);

然后用這個

$reportdata[1]['reportviews']

你不會得到任何錯誤。

$reportdata->{'1'}->reportname;
$reportdata->{'1'}->reportviews;

您可以像其他人提到的那樣訪問對象的屬性,但是想要提供替代選項。

get_object_vars - 獲取給定對象的屬性

array get_object_vars(object $ object)

http://php.net/manual/en/function.get-object-vars.php

$arrReportData = get_object_vars($reportdata);
echo $arrReportData[1]->reportviews;

請注意,這是非遞歸的,因此在您的情況下,您將獲得一個對象數組。

您嘗試訪問元素的方式:

$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'}; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM