2010-12-17 4 views
1

私のオブジェクト($結果)のますprint_rは、次の値を返します。このqueryresultオブジェクト内の配列にアクセスするにはforeachループを使用しますか?

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

+2

'Object'は配列ではなくオブジェクトであることを意味します。 –

+0

@Ignacio:しかし、 'Iterator'や' IteratorAggregate'を実装すると、配列のように扱うことができるので、ちょうどそのようにうまくいくかもしれません... – ircmaxell

答えて

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

1

サンプルを正しく読んでいると、アイテムは配列ではなく標準オブジェクトです。

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

質問にインデントを付け加えました –

2

このような問題を引き起こすのは、foreachループ内で印刷しようとすることです。たとえば、$結果ごとにvar_dumpを実行して、その構造が何であるかを調べることができます。また、どのように処理するかを決定するのに役立ちます。

+1

+ 1良い考え:) – shevski

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>"; 
    } 
関連する問題