簡體   English   中英

如何從php中返回的對象中檢索值?

[英]How to retrieve value from returned object in php?

如何從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
}
}

您不能直接訪問對象屬性,因為它被聲明為受保護的(只能從類或繼承類中訪問)。

但是,在這種情況下,開發人員通常會添加一個對象方法或重載函數,允許您訪問您要查找的信息。 查看源代碼,看起來您應該能夠使用以下任一方式訪問您要查找的數據:

// 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. 嘗試查找對象類並添加函數來檢索值。
  2. 使用正則表達式提取部分,不推薦使用: /\\'character\\'(length\\=(.*?))/

如果您查看Row類,您會發現您可以訪問它,將對象視為數組。

$character = $myRow[0];

查看您在此處轉儲的對象,您可以看到該對象正在實現 \\Iterator、\\Countable、\\ArrayAccess,這意味着您基本上可以將其視為數組。 底層數據源是受保護的 $raw。

$queryResult = ...;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM