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

pso*_*sen 10 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)
Run Code Online (Sandbox Code Playgroud)

当我echo $object[url]它返回时string 'http://location/file.pdf' (length=24),然而当echo $object->url我得到null.(这有时用于从数组中提取值,我只是不确定在哪种情况下或什么类型的数组)

问题是我使用具有git功能的托管服务提供商,当我推送我的更改时,它检查PHP代码并遇到语法错误(意外的'[')停止推送.

我的本地服务器使用PHP 5.4.16并且主机使用5.3.2

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

Mik*_*ant 10

你没有对象,你有一个关联数组.请注意var_dump()输出中的第一个单词是:

array
Run Code Online (Sandbox Code Playgroud)

因此$object->url没有意义,实际上应该给你一个关于尝试访问非对象的属性的错误.

我无法想象任何与PHP相关的语法检查过程会在类似的事情上引发错误$foo['bar'].无论是对象还是数组,通常都无法通过简单的语法检查来确定.你可能在之前的某个地方有其他的拼写错误.

  • 也就是说,` - >`用于通过实现`ArrayAccess`的对象访问**对象**. (2认同)

Daa*_*aan 8

您无法以这种方式访问​​数组:->它仅适用于以下对象:

$x = (object) array('a'=>'A', 'b'=>'B', 'C'); gives you:

stdClass Object
(
    [a] => A
    [b] => B
    [0] => C
)
Run Code Online (Sandbox Code Playgroud)

要访问这些值,您必须按照以下方式执行->:

$valA = $x->a;
Run Code Online (Sandbox Code Playgroud)