Использовать цикл foreach для доступа к массиву в этом объекте запроса? - PullRequest
1 голос
/ 17 декабря 2010

print_r моего объекта ($ results) возвращает следующее:

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, чтобы вернуть мой код в нужное русло?

Ответы [ 4 ]

2 голосов
/ 17 декабря 2010

Вот как я это сделал, спасибо за помощь, предоставленную участниками.

  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>";
  }
2 голосов
/ 17 декабря 2010

Что помогает мне в таких проблемах, так это пытаться печатать внутри цикла foreach.Например, вы можете сделать var_dump для каждого $ result и посмотреть, что это за структура, и это может помочь определить, как действовать.

1 голос
/ 17 декабря 2010

$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>";
}
1 голос
/ 17 декабря 2010

Если я правильно читаю ваш образец, ваши элементы являются объектами 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 выше трудно прочитать.Если бы вы могли предоставить ему отступ, это было бы полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...