2015-01-26 2 views
0

У меня возникли проблемы с группировкой массива, возвращаемого из SOQL-запроса.PHP - результаты группировки массивов из SOQL

содержимого массива следующим образом (это обрезанный вариант, чтобы дать представление о структуре):

QueryResult Object 
(
[queryLocator] => 
[done] => 1 
[records] => Array 
    (
     [0] => stdClass Object 
      (
       [Id] => 
       [Contact] => 003b000000Ii7HcAAJ 
       [Session] => stdClass Object 
        (
         [Id] => 
         [Name] => Future Leaders (Day1) 
        ) 

      ) 

     [1] => stdClass Object 
      (
       [Id] => 
       [Contact] => 003b000000Ii6jtAAB 
       [Session] => stdClass Object 
        (
         [Id] => 
         [Name] => Future Leaders Program (Day1) 
        ) 

      ) 

     [2] => stdClass Object 
      (
       [Id] => 
       [Contact] => 003b000000Ii7MIAAZ 
       [Session] => stdClass Object 
        (
         [Id] => 
         [Name] => Future Leaders Program (Day2) 
        ) 

      ) 

     [3] => stdClass Object 
      (
       [Id] => 
       [Contact] => 003b000000KL4G4AAL 
       [Session] => stdClass Object 
        (
         [Id] => 
         [Name] => Utilities Chat 
        ) 

      ) 

     [4] => stdClass Object 
      (
       [Id] => 
       [Contact] => 003b000000Ii62fAAB 
       [Session] => stdClass Object 
        (
         [Id] => 
         [Name] => Working Group Update 
        ) 

      ) 

    ) 

Вопрос заключается в том, что запрос возвращает дубликаты контактов и продублировать сеансы, поэтому я хочу, чтобы разобраться в этом в новый массив с различными контактами и все сеансы, связанные с контактом. Его SOQL-запрос, поэтому я не могу выбрать SELECT DISTINCT и GROUP BY, не дает мне правильных результатов.

Любая помощь была бы действительно оценена, так как мои навыки PHP очень ржавые!

ответ

0

Одна из проблем заключается в том, что у вас есть массив объектов. Вы смешиваете массивы и объекты. Для ваших нужд я бы прошел через массив записей и создавал новый массив с контактом в качестве ключа и сеансов как массив объектов для каждого ключа.

$contacts = array(); 
foreach($records as $record) 
{ 
    if(!exists($contacts[$record->Contact])) 
     $contacts[$record->Contact] = array(); 
    $contacts[$record->Contact][] = $record->Session; 
} 
+0

Отлично! Спасибо, это сработало немного. –

Смежные вопросы