2016-07-13 3 views
-1

У меня есть многомерный массив, который я отстранился от отдела продаж, используя их API:PHP Как отображать многомерный массив

SObject Object 
(
    [type] => [fields] => [Contacts] => stdClass Object 
    (
     [done] => 1 [queryLocator] => [records] => Array 
     (
      [0] => stdClass Object 
      (
       [Id] => [AccountId] => 0015800000XXXX12 [Name] => Test Client 
      ) 
     ) 
     [size] => 1 
    ) 
    [Name] => Marcellus House 
) 

Я также сделал var_dump:

object(SObject)#5 (4) 
{ 
    ["type"]=> NULL 
    ["fields"]=> NULL 
    ["Contacts"]=> object(stdClass)#7 (4) 
    { 
     ["done"]=> bool(true) 
     ["queryLocator"]=> NULL 
     ["records"]=> array(1) 
     { 
      [0]=> object(stdClass)#8 (3) 
      { 
       ["Id"]=> NULL 
       ["AccountId"]=> string(18) "0015800000XXXX12" 
       ["Name"]=> string(16) "Test Client" 
      } 
     } 
     ["size"]=> int(1) 
    } 
    ["Name"]=> string(15) "Marcellus House" 
} 

Я использую код ниже, чтобы отобразить имя: Marcellus House, но я пытаюсь отобразить другие 2 поля в массиве [AccountId] => 0015800000XXXX12 и [Name] => Test Client

foreach ($Response->records as $RecordSet) 
{ 
    echo $RecordSet->Name; 
} 

Я хотел бы получить все данные следующим образом.

foreach ($Response->records as $RecordSet) 
{ 
    echo $RecordSet->Name; 
    echo $RecordSet->AccountId; 
    echo $RecordSet->Name; 
} 

Но изо всех сил, чтобы получить эту работу ... Любая помощь была бы оценена ...

+0

Что не работает? - Какие ошибки вы получаете? – Epodax

+0

Почему он не ведет себя так, как вы этого хотите, каков желаемый результат и что вы получаете? – JRsz

+0

Ваши другие 2 поля находятся в другом идентификаторе массива. –

ответ

0

Вам нужно добавить еще один Foreach

foreach ($Response->records as $RecordSet) 
{ 
    $accountid = ""; 
    $name = ""; 
    foreach($RecordSet->records as $record) 
    { 
     $accountid = $record['AccountId']; 
     $name = $record['Name']; 
    } 
    echo $RecordSet->Name; 
    echo $accountid; 
    echo $name; 
} 
+0

Это не работает, вы переписываете $ accountid и поэтому получаете только последнее. Второй цикл foreach получает только значения последнего набора массива ... – JRsz

+0

он пытается эха только внутри цикла, я верю. Он будет работать в этом случае. –

+0

Спасибо за ответ, но выше не работает, я все еще получаю $ RecordSet-> Name; как и раньше, но не остальные 2 поля. Я уверен, что второй foreach либо не работает, либо не корректен, так как он не зацикливается на массиве вообще, поскольку я просто добавил эхо '1'; в этом массиве и ничего не отображается. – user1315422

0
foreach ($Response->records as $RecordSet) 
{ 
    echo $RecordSet->Name; 
    echo $RecordSet->Contacts->records[0]->AccountId; 
    echo $RecordSet->Contacts->records[0]->Name; 
} 

Это должно работать , Идентификатор учетной записи и имя далее вложены в этот объект. Я редактировал свой пост, чтобы сделать его более удобным для чтения, на самом деле я всегда предлагаю вам использовать уаг дамп surronded на заранее элемент, как это:

echo "<pre>"; 
var_dump($yourVariable); 
echo "</pre>"; 

Затем вы можете увидеть структуру и простое построение пути вам нужно чтобы получить доступ к необходимой вам информации. В этом случае вам нужно «перейти» в «Контакты», а затем записать. Поскольку записи - это массив с индексом 0, вы можете просто записать записи [0] и «перейти» к сохраненному в нем объекту, который содержит нужную вам информацию.

Если этот сонный сок поможет вам, пожалуйста, дайте мне знать.

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