Конкатенация результатов API Wufoo - PullRequest
1 голос
/ 03 ноября 2011

Я работаю с Wufoo api (https://{subdomain}.wufoo.com/api/v3/forms/{formIdentifier}/entries.{xml|json})), пытающимся получить все мои записи, в настоящее время около 150, в виде одного массива php. Wufoo ограничивает количество возвращаемых записей до 100 Итак, теперь у меня есть два php-массива, которые я хотел бы объединить / объединить в один массив.

Код на данный момент:

$api_uri_1 = "https://example.wufoo.com/api/v3/forms/example-form/entries.json?pageStart=0&pageSize=100";
$api_uri_2 = "https://example.wufoo.com/api/v3/forms/example-form/entries.json?pageStart=1&pageSize=100";

function wufoo_api($api_uri) {
  $curl = curl_init($api_uri);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_USERPWD, 'WUFOO-API-KEY-HERE:password');
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_USERAGENT, 'Wufoo Sample Code');
  $response = curl_exec($curl);
  $resultStatus = curl_getinfo($curl);

  if ($resultStatus['http_code'] == 200) {
      $results = json_decode($response, true);
      return $results;
  } else {
      $results = 'Call Failed '.print_r($resultStatus);
      return $results;
  }
}

$result1 = wufoo_api($api_uri_1);
$result2 = wufoo_api($api_uri_2);

То, что я пробовал и не сработало

$all_results = array_merge($result1, $result2);

и что-то вроде этого

$all_results = $result1;
$all_results += $result2;

Как объединить / объединить результат1 и результат2

Заранее спасибо за любую помощь

Обновлено: что сработало

Благодаря Бен Я понял, что мне нужно использовать ключ массива для нацеливания на нужные мне части массива.

$all_results = array_merge($result1['Entries'],$result2['Entries']); 

1 Ответ

2 голосов
/ 03 ноября 2011

Результат из json_decode будет содержать корневой элемент (записи в соответствии с API).

Вы получите доступ к массиву записей через $ result1 ['Entries'], так что для объединения записей вынужно сделать что-то вроде:

$all_results = array_merge($result1['Entries'],$result2['Entries']);

или

$all_results = $result1['Entries'];
$all_results += $result2['Entries'];

также для случая сбоя это должно быть

$results = 'Call Failed '.print_r($resultStatus,true);

(в противном случае,вы выводите результат print_r, а не возвращаете его)

...