如何从php中的复杂对象结构中检索值?我知道使用' - >'运算符我们可以访问该值,但我在返回的对象中非常困惑。从返回的对象中,我想获取字符值。我怎么做? 我正在使用Neo4jPHP并尝试执行密码查询" MATCH(n)RETURN不同的密钥(n)"返回所有不同的属性键。执行行对象的var_dump后,部分输出如下所示。
修改: - 按照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
}
}
答案 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)
您要查找的值受到保护且无法访问,
答案 2 :(得分:0)
如果您查看类Row,您会发现可以像对待数组一样处理对象。
$character = $myRow[0];
答案 3 :(得分:0)
查看您转储的对象here,您可以看到该对象正在实现\ Iterator,\ Countable,\ ArrayAccess,这意味着您基本上可以将其视为数组。基础数据源是受保护的$ raw。
$queryResult = ...;
foreach ($queryResult as $row) {
echo $row['character'] . PHP_EOL;
}