按键

时间:2017-01-10 03:31:38

标签: php arrays soap multidimensional-array

我有这个多维数组

array(192) {
   [0]=>
   object(stdClass)#29 (16) {
   ["campaignId"]=>
     int(746598)
   ["creativeId"]=>
     int(11062415)
   ["targetId"]=>
     int(814283)
   ["targetStatus"]=>
     string(6) "ACTIVE"
   ["impressions"]=>
     int(9)
   ["clicks"]=>
     int(0)
   ["cost"]=>
     float(0.3003)
   ["ctr"]=>
     NULL
   ["cpm"]=>
     float(33.3667)
   ["conversions"]=>
     int(2)
   ["revenue"]=>
     float(4)
   ["cpa"]=>
     float(0.1502)
   ["cr"]=>
     float(22.22222)
   ["averageRank"]=>
     float(1.9)
   ["maxBid"]=>
     float(0.884)
   ["averageBid"]=>
     float(0.0334)
   }
[1]=>
   object(stdClass)#29 (16) {
   ["campaignId"]=>
     int(746598)
   ["creativeId"]=>
     int(11062415)
   ["targetId"]=>
     int(814283)
   ["targetStatus"]=>
     string(6) "ACTIVE"
   ["impressions"]=>
     int(9)
   ["clicks"]=>
     int(0)
   ["cost"]=>
     float(0.3003)
   ["ctr"]=>
     NULL
   ["cpm"]=>
     float(33.3667)
   ["conversions"]=>
     int(2)
   ["revenue"]=>
     float(4)
   ["cpa"]=>
     float(0.1502)
   ["cr"]=>
     float(22.22222)
   ["averageRank"]=>
     float(1.9)
   ["maxBid"]=>
     float(0.884)
   ["averageBid"]=>
     float(0.0334)
   }
[2]=>
    object(stdClass)#29 (16) {
    ["campaignId"]=>
      int(746595)
    ["creativeId"]=>
      int(11062415)
    ["targetId"]=>
      int(814283)
    ["targetStatus"]=>
      string(6) "ACTIVE"
    ["impressions"]=>
       int(9)
    ["clicks"]=>
      int(0)
    ["cost"]=>
      float(0.3003)
    ["ctr"]=>
      NULL
    ["cpm"]=>
      float(33.3667)
    ["conversions"]=>
      int(2)
    ["revenue"]=>
      float(4)
    ["cpa"]=>
     float(0.1502)
    ["cr"]=>
      float(22.22222)
    ["averageRank"]=>
      float(1.9)
    ["maxBid"]=>
      float(0.884)
    ["averageBid"]=>
      float(0.0334)
   }
  [3]=>
object(stdClass)#29 (16) {
   ["campaignId"]=>
     int(746595)
    ["creativeId"]=>
      int(11062415)
    ["targetId"]=>
     int(814283)
   ["targetStatus"]=>
      string(6) "ACTIVE"
   ["impressions"]=>
      int(9)
   ["clicks"]=>
     int(0)
   ["cost"]=>
     float(0.3003)
   ["ctr"]=>
     NULL
   ["cpm"]=>
    float(33.3667)
   ["conversions"]=>
     int(2)
   ["revenue"]=>
     float(4)
   ["cpa"]=>
     float(0.1502)
   ["cr"]=>
     float(22.22222)
   ["averageRank"]=>
     float(1.9)
   ["maxBid"]=>
     float(0.884)
   ["averageBid"]=>
     float(0.0334)
   }
 }
}

我想总结成本的价值并得到每个广告系列ID的平均值,我只得到数组的最后一部分。

这是我的代码

while (strtotime($startDate) <= strtotime($endDate)) {
    $newStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($startDate)));

    $params = array(
        'date'=> $newStartDate
    );
    $reports = $client->__soapCall('getDailyTargetsStats', array($params));

    $dateToday = date('Y-m-d');
    $cost = 0;
    $resultArray = $reports->stats->item;
    foreach ($resultArray as $value) {
        $campaignId = $value->campaignId;
        $cost += $value->cost;

        if ((!$newStartDate) || (!$campaignId)) {
            continue;
        }
        //get campaign names
        $campaignName =  $this->get_campaigns($campaignId);

        $data = array(
            'date' => $newStartDate,
            'campaign_id' => $campaignId,
            'campaign_name' => $campaignName,
            'cost' => $cost
        );
        echo '<pre>';
        var_dump($data);
        echo '</pre>';
        exit;   
    }
    sleep(5);
    $startDate = $newStartDate;
}

任何建议都可以,我目前正在CodeIgniter和PHP 5.6中开发它。

那么现在的代码就是这个

foreach ($resultArray as $value) {
                $campaignId = $value->campaignId;
                $cost += $value->cost;

                if ((!$newStartDate) || (!$campaignId)) {
                    continue;
                }

                //get campaign names
                $campaignName =  $this->get_campaigns($campaignId);

                $data = array(
                    'date' => $newStartDate,
                    'campaign_id' => $campaignId,
                    'campaign_name' => $campaignName,
                    'cost' => $cost
                );



            }
            echo '<pre>';
            var_dump($data);
            echo '</pre>';
            exit;

1 个答案:

答案 0 :(得分:0)

这可能对您有用:

foreach ($resultArray as $value) {
    $campaignId = $value->campaignId;
    $newStartDate = $value->newStartDate;

    if ((!$newStartDate) || (!$campaignId)) {
        continue;
    }

    $cost = $value->cost;

    //get campaign names
    $campaignName = $this->get_campaigns($campaignId);

    $data[campaign_id] = array(
        'date' => $newStartDate,
        'campaign_id' => $campaignId,
        'campaign_name' => $campaignName,
        'cost' => $data['campaign_name'] + $cost
    );
}