2016-08-07 7 views
1

内のオブジェクトの配列を作成しようとすると:私はこの機能を使って、配列を反復処理しようとPHP

["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" 
        } 
        } 

       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 

配列が中に格納されます。

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(したがって、配列にアクセスするための$ data-data)と、と["Rank"]を取得し、それらを変数$asdに格納するために、両方のオブジェクト(["mainUrl"]["competitorUrl1"])を反復処理しなければなりません。これを行うにはes。 異なる名前のthorughオブジェクトを正しく反復する方法がわかりません["mainUrl"]および["competitorUrl1"])。私は十分にそれを説明していない場合は申し訳ありませんが、私はPHPのノブですので、ご質問があればお尋ねください。あなたのお時間をありがとうございました。

答えて

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

->{'mainUrl'}を忘れましたか?私の悪い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); 
} 
+0

をしかし、これが唯一のmainUrlためにかかるだろう、私はmainUrlとcompetitorUrl1 – Alan

+0

それらの両方のためにインフォアの配列が必要になります。だから、次のようなものになるだろうどちらも、私は{'mainUrl'}と{"competitorUrl1"}からの情報を取るべきです – Alan

関連する問題