【发布时间】:2010-09-02 14:01:18
【问题描述】:
在我的应用程序中,我返回了一个对象数组,我试图访问数组中的对象,就像 $array[0]->name 一样,但由于某种原因它不起作用,
我试图像这样访问它 - $var = $array[0]; $var->name 它显示了这个错误 > Trying to get property of non-object
这里发生了什么?为什么我无法访问该对象?我怎样才能访问它? 另外,如果我只得到一个多维数组而不是对象数组会更好吗?
var_dump://
array(2) {
[0]=>
object(stdClass)#16 (9) {
["id"]=>
string(1) "1"
["name"]=>
string(27) "нямам си и идея"
["description"]=>
string(19) "емиииии....."
["price"]=>
string(3) "823"
["lang"]=>
string(2) "bg"
["category"]=>
string(1) "0"
["slug"]=>
string(7) "shalala"
["status"]=>
string(1) "1"
["sid"]=>
string(1) "1"
}
[1]=>
object(stdClass)#17 (9) {
["id"]=>
string(1) "2"
["name"]=>
string(19) "no tyore idea what "
["description"]=>
string(22) "are you talking to me "
["price"]=>
string(3) "823"
["lang"]=>
string(2) "en"
["category"]=>
string(1) "0"
["slug"]=>
string(7) "shalala"
["status"]=>
string(1) "1"
["sid"]=>
string(1) "1"
}
}
$array[0] 的变量转储
object(stdClass)#16 (9) {
["id"]=>
string(1) "1"
["name"]=>
string(27) "нямам си и идея"
["description"]=>
string(19) "емиииии....."
["price"]=>
string(3) "823"
["lang"]=>
string(2) "bg"
["category"]=>
string(1) "0"
["slug"]=>
string(7) "shalala"
["status"]=>
string(1) "1"
["sid"]=>
string(1) "1"
}
[已解决] = 框架将我指向错误的代码行,错误在代码下方 10 行,我没有看到它:(
【问题讨论】:
-
错误消息显示
$array[0]不是对象。在上面使用var_dump()看看里面有什么。 -
你能粘贴代码的上下文吗?好像哪里有错别字。
-
Grodon ,这是 $array 的输出,稍后添加 $array[0]
-
很奇怪。 $array[0]->name 在这种情况下应该可以工作。使用 Xdebug 或 Zend_Debugger 之类的调试器来单步调试代码,看看哪里出错了。
-
运行这段代码会发生什么:
$a = new StdClass; $a->name = 'foo'; $array = array($a); echo $array[0]->name;