我有一个对象,当我用户var_dump
时,我得到以下内容:
var_dump($object);
array (size=7)
'id' => int 1969
'alt' => string '' (length=0)
'title' => string 'File Name' (length=9)
'url' => string 'http://location/file.pdf' (length=24)
当我echo
$object[url]
时,它会返回string 'http://location/file.pdf' (length=24)
,但是当我echo
$object->url
时,我会null
。 (这有时用于从数组中提取值,我只是不确定在哪种情况下或什么类型的数组)
问题是我使用具有git功能的托管服务提供商,当我推送我的更改时,它会检查PHP代码并遇到语法错误(意外的' [')这会停止推。
我的本地服务器使用PHP 5.4.16
,主机使用5.3.2
从更广泛的角度来看,有人能指出我的资源,解释这两种从数组中提取值的方法之间的区别吗?非常感谢!
答案 0 :(得分:10)
您没有对象,您有一个关联数组。请注意,var_dump()
输出中的第一个单词是:
array
因此$object->url
没有任何意义,实际上应该在尝试访问非对象的属性时给出错误。
我无法想象任何与PHP相关的语法检查过程会导致$foo['bar']
之类的错误。无论是对象还是数组,通常都无法通过简单的语法检查来确定。你可能在之前的某个地方有其他拼写错误。
答案 1 :(得分:7)
您不能以这种方式访问数组:->
仅适用于以下对象:
$x = (object) array('a'=>'A', 'b'=>'B', 'C'); gives you:
stdClass Object
(
[a] => A
[b] => B
[0] => C
)
要访问这些值,您必须按照->
的方式执行此操作:
$valA = $x->a;