2016-11-08 50 views
0

我有一個stdObject及其var_dump結果低於:無法訪問stdObject陣列 - >運營商

var_dump($name) 
array(1) { 
    [0]=> 
    object(stdClass)#853 (2) { 
    ["firstname"]=> 
    string(2) "John" 
    ["lastname"]=> 
    string(8) "Smith" 
    } 
} 

我試圖用$name['firstname].$name['lastname']作出新的變量$fullname。它不起作用,給出了錯誤Undefined index

然後我試着在$name->firstname + $name->lastname上使用->運算符。給出錯誤:trying to get property of non-object

我該如何解決這個問題?

+1

'$ name [0] - >名字。 $名稱[0] - >姓氏;'。 PHP版本依賴。 –

+0

做出這個答案,並請解釋它。謝謝 – omrakhur

+0

使用$ obj = current($ name); $ obj->姓氏等 – Fky

回答

3

$name[0]->firstname . $name[0]->lastname;

基本上你試圖訪問數組作爲對象。您可以從您的var_dump中看到該變量包含一個數組。該數組包含具有2個屬性的對象。因此$name[0]爲您提供了該對象,->firstname訪問該對象的firstname屬性。

+0

這是PHP 5.6。你能解釋我做錯了什麼嗎?這裏是新手。 – omrakhur

+0

@omrakhur:這不是版本問題,你的對象在0索引裏 – devpro

+1

基本上你試圖訪問一個數組作爲一個對象。你可以從'var_dump'中看到變量包含一個數組。該數組包含具有2個屬性的對象。所以'$ name [0]'給你這個對象,' - > firstname'訪問這個對象的'firstname'屬性。合理? –

1

試試這個:

$name[0]['firstname].$name[0]['lastname']; 

由於$名稱中包含

array(1)

在裏面。

說明: $ name是一個對象數組。因此,要訪問它的價值,你必須使用索引以及 - >。 檢查var_dump(),首先它包含一個數組,然後是對象。

+0

你能解釋一下嗎?謝謝 – omrakhur

+2

2個理由不起作用。 1)缺少'''2)0索引是一個對象,而不是數組。 –

+1

同意這將無法正常工作... @JonStirling – devpro