2010-12-17 155 views
1

我對象($結果)的print_r的返回方式如下:使用foreach循環訪問此queryresult對象內的數組?

QueryResult Object 
([queryLocator] => [done] => 1 [records] => 
Array ([0] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0167 [Partner_Research_Name__c] => MM Sample Organization-TBR Partner 2011 [Id] => a0V80000003FwjjEAC) [Id] => a0V80000003FwjjEAC) 
[1] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0170 [Partner_Research_Name__c] => Kansas City, Missouri Public Schools-TBR Partner 2011 [Id] => a0V80000003Fxf9EAC) [Id] => a0V80000003Fxf9EAC) 
[2] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0169 [Partner_Research_Name__c] => Newark Public Schools-TBR Partner 2011 [Id] => a0V80000003FxQ2EAK) [Id] => a0V80000003FxQ2EAK) 
[3] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0168 [Partner_Research_Name__c] => Breakthrough Charter Schools-TBR Partner 2011 [Id] => a0V80000003FxPxEAK) [Id] => a0V80000003FxPxEAK) 
[4] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0004 [Partner_Research_Name__c] => KIPP, San Antonio-TBR Partner 2011 [Id] => a0V80000003FrBUEA0) [Id] => a0V80000003FrBUEA0) 
[5] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0003 [Partner_Research_Name__c] => KIPP, Chicago - Gary-TBR Partner 2011 [Id] => a0V80000003FrB5EAK) [Id] => a0V80000003FrB5EAK) 
[6] => SObject Object ([type] => Partner_Research__c [fields] => stdClass Object ([Partner_Research_URL__c] => http://www.forms.com/184320?tfa_PRID=PR-0023 [Partner_Research_Name__c] => Harlem Village Academies-TBR Partner 2011 [Id] => a0V80000003FrEOEA0) [Id] => a0V80000003FrEOEA0)) [size] => 7) 

我想用類似的循環什麼如下圖所示,顯示了一系列的成果然而foreach語句是不正確。

foreach ($results as $result) 
    { 
    $id = $result[fields][Id]; 
    $name = $result[fields][Partner_Research_Name__c]; 
    $url = $result[fields][Partner_Research_URL__c]; 

    $html .= "<tr><td>$id</td><td>$name</td><td>$url</td></tr>"; 
    } 

我需要對foreach語句做些什麼修改才能使我的代碼恢復正常?

+0

QueryResult的類定義是什麼?它是來自框架(哪一個),還是你自己寫的? – ircmaxell 2010-12-17 18:55:31

+2

'對象'意味着它是一個對象,而不是一個數組。 – 2010-12-17 18:56:53

+0

@Ignacio:但是如果它實現了'Iterator'或'IteratorAggregate',它可以像數組一樣對待,所以它可以像這樣工作(好吧,無論如何foreach)... – ircmaxell 2010-12-17 19:00:30

回答

1

$results是QueryResults對象的名稱,我不知道代碼中的真實姓名是什麼。

foreach ($results->records as $result) 
{ 
    $id = $result->Id; 
    $name = $result->fields->Partner_Research_Name__c; 
    $url = $result->fields->Partner_Research_URL__c; 

    $html .= "<tr><td>$id</td><td>$name</td><td>$url</td></tr>"; 
} 
+0

(1)變量在原始代碼中調用'$ results'(參見問題的第一個單詞)。 (2)$ results-> results'(或'$ ResultObject-> results',如果你堅持)來自哪裏?即:解釋如何/爲什麼這是正確的? – cHao 2010-12-17 19:12:42

1

如果我正確讀取您的示例,您的項目是std對象而不是數組。您可能需要像這樣引用它們:

foreach ($results as $result) 
    { 
    $id = $result->fields->Id; 
    $name = $result->fields->Partner_Research_Name__c; 
    $url = $result->fields->Partner_Research_URL__c; 

    $html .= "<tr><td>$id</td><td>$name</td><td>$url</td></tr>"; 
    } 

上面的print_r樣本很難閱讀。如果你可以提供縮進,這將是有益的。

+0

我給問題添加了縮進 – 2010-12-17 18:59:49

2

什麼幫助我解決這樣的問題是嘗試在foreach循環內打印。例如,您可以對每個$結果執行var_dump並查看該結構是什麼,它可以幫助確定如何繼續。

+1

+ 1個好主意:) – shevski 2010-12-17 19:56:42

2

這是我最終做到的,感謝貢獻者提供的幫助。

foreach ($results->records as $result) 
    { 
    $id = $result->fields->Id; 
    $name = $result->fields->Partner_Research_Name__c; 
    $url = $result->fields->Partner_Research_URL__c; 

    $html .= "<tr><td>$id</td><td>$name</td><td>$url</td></tr>"; 
    }