PHP - 提取数组值(方括号与箭头符号)

时间:2014-10-03 14:48:08

标签: php arrays

我有一个对象,当我用户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

从更广泛的角度来看,有人能指出我的资源,解释这两种从数组中提取值的方法之间的区别吗?非常感谢!

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;