0

如何从 php 中的复杂对象结构中检索值?我知道使用 '->' 运算符我们可以访问该值,但我对返回的对象感到非常困惑。从返回的对象中,我想获取字符值。我怎么做?我正在使用Neo4jPHP并尝试执行密码查询“MATCH (n) RETURN distinct keys(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
}
}
4

4 回答 4

1

您不能直接访问对象属性,因为它被声明为受保护(只能从类或继承类中访问)。

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

// 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"
于 2015-05-27T19:10:14.113 回答
0

您正在寻找的价值受到保护且无法访问,

  1. 尝试查找对象类并添加函数来检索值。
  2. 使用正则表达式提取部分,不推荐使用:/\'character\'(length\=(.*?))/
于 2015-05-27T18:59:43.280 回答
0

如果您查看Row类,您会发现您可以将对象视为数组来访问它。

$character = $myRow[0];
于 2015-05-27T19:02:09.393 回答
0

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

$queryResult = ...;

foreach ($queryResult as $row) {
   echo $row['character'] . PHP_EOL;
}
于 2015-05-27T19:08:51.937 回答