簡體   English   中英

試圖在php中創建一個對象數組

[英]Trying to make an array of objects in php

我嘗試使用此函數迭代數組:

public static function getDataForChartAlexaDailyRank($data)
{
    $asd = [];
    $new = [];
    $site = [];
    for ($x = 0; $x < sizeof($data->data); $x++) {
        foreach ((array)@$data->data->{$x} as $value) {
            array_push($site, intval($value->{"Response"}->{"TrafficHistoryResult"}->{"Alexa"}->{"TrafficHistory"}->{"Site"}));
        }
        foreach ((array)@$data->data->{$x} as $value) {
            array_push($new, intval($value->{'Response'}->{'TrafficHistoryResult'}->{'Alexa'}->{'TrafficHistory'}->{'HistoricalData'}->{'Data'}->{'Rank'}));
        }
        $asd[] = ['name' => $site, 'data' => $new];
        $new = [];
    }
    return json_encode($asd);
}

該數組如下所示:

["data"]=>
  object(stdClass)#229 (2) {
    ["mainUrl"]=>
    object(stdClass)#235 (1) {
      ["Response"]=>
      object(stdClass)#238 (2) {
        ["OperationRequest"]=>
        object(stdClass)#237 (1) {
          ["RequestId"]=>
          string(36) "1d7824a5-dc09-4efb-9f2a-b35055abc04d"
        }
        ["TrafficHistoryResult"]=>
        object(stdClass)#241 (1) {
          ["Alexa"]=>
          object(stdClass)#242 (1) {
            ["TrafficHistory"]=>
            object(stdClass)#243 (4) {
              ["Range"]=>
              string(2) "31"
              ["Site"]=>
              string(25) "https://app.klipfolio.com"
              ["Start"]=>
              string(10) "2016-07-01"
              ["HistoricalData"]=>
              object(stdClass)#244 (1) {
                ["Data"]=>
                array(31) {
                  [0]=>
                  object(stdClass)#245 (4) {
                    ["Date"]=>
                    string(10) "2016-07-01"
                    ["PageViews"]=>
                    object(stdClass)#246 (2) {
                      ["PerMillion"]=>
                      string(3) "2.5"
                      ["PerUser"]=>
                      string(4) "5.50"
                    }
                    ["Rank"]=>
                    string(5) "30467"
                    ["Reach"]=>
                    object(stdClass)#247 (1) {
                      ["PerMillion"]=>
                      string(2) "30"
                    }
                  }

                }
              }
            }
          }
        }
      }
    }
    ["competitorUrl1"]=>
    object(stdClass)#338 (1) {
      ["Response"]=>
      object(stdClass)#339 (2) {
        ["OperationRequest"]=>
        object(stdClass)#340 (1) {
          ["RequestId"]=>
          string(36) "ac7ba0b9-c789-5f6a-f1c8-714587b494e9"
        }
        ["TrafficHistoryResult"]=>
        object(stdClass)#341 (1) {
          ["Alexa"]=>
          object(stdClass)#342 (1) {
            ["TrafficHistory"]=>
            object(stdClass)#343 (4) {
              ["Range"]=>
              string(2) "31"
              ["Site"]=>
              string(23) "http://onlinesupport.io"
              ["Start"]=>
              string(10) "2016-07-01"
              ["HistoricalData"]=>
              object(stdClass)#344 (0) {
                 ["Data"]=>
                array(31) {
                  [0]=>
                  object(stdClass)#245 (4) {
                    ["Date"]=>
                    string(10) "2016-07-01"
                    ["PageViews"]=>
                    object(stdClass)#246 (2) {
                      ["PerMillion"]=>
                      string(3) "2.5"
                      ["PerUser"]=>
                      string(4) "5.50"
                    }
                    ["Rank"]=>
                    string(5) "30467"
                    ["Reach"]=>
                    object(stdClass)#247 (1) {
                      ["PerMillion"]=>
                      string(2) "30"
                    }
                  }

                }
              }
            }
          }
        }
      }
    }
  }

數組存儲在變量$ data(因此訪問數組的$ data-data)中,我必須遍歷兩個對象( ["mainUrl"]["competitorUrl1"]來獲取["Site"]["Rank"]並將它們存儲到變量$asd 。我編寫的函數試圖這樣做。我說嘗試因為我不知道如何正確地迭代不同名稱的對象["mainUrl"]["competitorUrl1"] )。我很抱歉,如果我沒有解釋得很好,但我是php的菜鳥,所以如果你有任何問題請詢問。非常感謝你的時間。

            foreach ((array)@$data->data[$x]->{'Response'}->{'TrafficHistoryResult'}->{'Alexa'}->{'TrafficHistory'}->{'HistoricalData'}->{'Data'} as $value) {

你忘了->{'mainUrl'}嗎? 所以它會是這樣的:

public static function getDataForChartAlexaDailyRank($data)
{
    $asd = [];
    $new = [];
    for ($x = 0; $x < sizeof($data->data); $x++) {
        $site = $data->data[$x]->{'mainUrl'}->{'Response'}->{'TrafficHistoryResult'}->{'Alexa'}->{'TrafficHistory'}->{'Site'};
        foreach ($data->data[$x]->{'mainUrl'}->{'Response'}->{'TrafficHistoryResult'}->{'Alexa'}->{'TrafficHistory'}->{'HistoricalData'}->{'Data'} as $value) {
            array_push($new, intval($value->{'Rank'}));
        }
        $asd[] = ['name' => $site, 'data' => $new];
        $new = [];
    }

    return json_encode($asd);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM