如何从PHP中返回的对象中检索值?

时间:2015-05-27 18:54:32

标签: php neo4jphp

如何从php中的复杂对象结构中检索值?我知道使用' - >'运算符我们可以访问该值,但我在返回的对象中非常困惑。从返回的对象中,我想获取字符值。我怎么做? 我正在使用Neo4jPHP并尝试执行密码查询" MATCH(n)RETURN不同的密钥(n)"返回所有不同的属性键。执行行对象的var_dump后,部分输出如下所示。 see in image about the object structure

修改: - 按照Mikkel的建议完成我编辑后的代码: -

$keyquery="MATCH (n) RETURN distinct keys(n)"; 
$querykey=new Everyman\Neo4j\Cypher\Query($client, $keyquery);
$resultkey = $querykey->getResultSet();
foreach ($resultkey as $row) 
{
for($i=0;$i<count($row[0]);$i++)
{
echo $row[0][$i]; // returns all the property keys from the Row object
}
}

4 个答案:

答案 0 :(得分:1)

您无法直接访问对象属性,因为它被声明为protected(只能从类或继承类中访问)。

但是,在这种情况下,开发人员通常会添加一个对象方法或重载功能,允许您访问您正在寻找的信息。看一下the source,看起来您应该能够使用以下任一方式访问您正在寻找的数据:

// this works because the class implements Iterator
foreach ($myobject as $row) {
    echo $row['keys(n)']; // outputs "character"
}

或:

// this works because the class implements ArrayAccess
// don't ask me why they put keys and values in different arrays ('columns' and 'raw')
echo $myobject[0]['keys(n)']; // outputs "character"

答案 1 :(得分:0)

您要查找的值受到保护且无法访问,

  1. 尝试查找对象类并添加函数以重新启动该值。
  2. 使用正则表达式提取不推荐的部分: / \&#39;字符\&#39;(?长度\ =(*))/

答案 2 :(得分:0)

如果您查看类Row,您会发现可以像对待数组一样处理对象。

$character = $myRow[0];

答案 3 :(得分:0)

查看您转储的对象here,您可以看到该对象正在实现\ Iterator,\ Countable,\ ArrayAccess,这意味着您基本上可以将其视为数组。基础数据源是受保护的$ raw。

$queryResult = ...;

foreach ($queryResult as $row) {
   echo $row['character'] . PHP_EOL;
}