neo4jКак извлечь значение из возвращенного объекта в php?

Как получить значение из сложной структуры объекта в PHP? Я знаю, используя оператор «->», мы можем получить доступ к значению, но я очень запутался в объекте, с которым мне возвращают. Из возвращенного объекта я хочу получить персонаж значение. Как я могу это сделать?
я использую Neo4jPHP и пытается выполнить зашифрованный запрос «MATCH (n) RETURN Different keys (n)», чтобы вернуть все различные ключи свойств. После выполнения var_dump объекта строки, частичный вывод показан ниже.
см. на изображении о структуре объекта

редактировать: — Мой отредактированный код после следования советам Миккеля: —

$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

Решение

Вы не можете получить доступ к свойству объекта напрямую, так как оно было объявлено как защищенный (доступно только из класса или наследующего класса).

Однако в таком случае разработчик обычно добавляет объектный метод или функцию перегрузки, которая позволяет вам получить доступ к информации, которую вы ищете. Взглянув на источник, Похоже, вы должны иметь доступ к данным, которые вы ищете, используя либо:

// 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

Другие решения

Значение, которое вы ищете, защищено и недоступно,

  1. попробуйте найти класс объекта и добавить функцию для повторного получения значения.
  2. используйте регулярное выражение для извлечения части, которая не рекомендуется:
    /\’character\'(length\=(.*?))/
0

Если вы посмотрите класс Строка вы обнаружите, что можете обращаться к нему, рассматривая объект как массив.

$character = $myRow[0];
0

Глядя на объект, который вы бросили Вот, вы можете видеть, что объект реализует \ Iterator, \ Countable, \ ArrayAccess, что означает, что вы можете в основном рассматривать его как массив. Основным источником данных является защищенный $ raw.

$queryResult = ...;

foreach ($queryResult as $row) {
echo $row['character'] . PHP_EOL;
}
0
По вопросам рекламы [email protected]