难以在for循环之外使用关联数组

时间:2016-04-08 12:15:23

标签: php arrays json curl

简而言之,我在PHP中在循环外打印一个关联数组时遇到问题。我基本上是循环遍历一系列广告系列ID,这些ID被替换为curl请求的URL(这是从服务器检索JSON数组)。然后我使用正则表达式从这个JSON中检索“base_bid”。理想情况下,我需要输出一个带有['id']和['base_bid']键的二维关联数组,如下所示:

Array ( [0] => Array ( [id] => 12311 [base_bid] => 0.8 ) [1] => Array ( [id] => 12322 [base_bid] => 0.4 ) )

问题是我无法访问循环外的完整assoc数组,因为值重叠意味着我得到了这个输出:

Array ( [id] => 11710821 [base_bid] => 3.8416 )

这是我的循环设计:

for ($i=0; $i < count($campaigns); $i++) {
  $ch = curl_init('https://api.appnexus.com/campaign?id='.$campaigns[$i].'');
  $options = array(CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_HTTPHEADER => array(
      'Content-Type: application/json',
      'Authorization:'.$token[1].''));
  curl_setopt_array($ch, $options);
  $base = curl_exec($ch);
  curl_close($ch);

  preg_match('/"base_bid":([0-9\.]+)/', $base ,$bid);
  $test['id'] = $campaigns[$i];
  $test['base_bid'] = $bid[1];
};

echo print_r($test);

有人知道如何在我的循环之外完整地检索ID和base_bids的二维数组吗?

非常感谢任何评论!

谢谢,

萨姆

1 个答案:

答案 0 :(得分:2)

您需要附加到$ test数组,而不是覆盖其中的元素,例如

$test[] = array(
    'id' => $campaigns[$i],
    'base_bid' => $bid[1],
);

[]运算符每次都会向$ test数组添加一个新元素,它应该为您提供所需的结构。