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

オブジェクト プロパティは保護されていると宣言されているため、直接アクセスすることはできません(クラスまたは継承クラス内からのみアクセスできます)。

ただし、このような場合、開発者は通常、探している情報にアクセスできるようにするオブジェクト メソッドまたはオーバーロード関数を追加しています。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"
于 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 に答える