2016-11-08 1 views
0

foreach를 사용하고 데이터에 액세스하는 데 문제가 있음을 알고있는 배열 배열이 있습니다.인덱싱 된 배열 다루기

배열 키에 날짜가있는 경우이 배열의 인덱스가 잘못되었습니다.

array(
[2016-11-03T07:00:00] => Array 
    (
     [0] => stdClass Object 
      (
       [Job] => stdClass Object 
        (
         [ID] => 87126387136 
         [Foo] => stdClass Object 
          (
           [ID] => 0 
           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [RecordStamp] => stdClass Object 
          (
           [AddedBy] => dbo 
          ) 

         [Premises] => stdClass Object 
          (

           [Location] => stdClass Object 
            (

             [Metric] => stdClass Object 
              (
               [Latitude] => 51.3453534534 
               [Longitude] => -0.417308 
              ) 

            ) 

           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [ScheduledStart] => 2016-11-03T07:00:00 
        ) 

      ) 

     [6] => stdClass Object 
      (
       [Job] => stdClass Object 
        (
         [ID] => 234923749 
         [Foo] => stdClass Object 
          (
           [ID] => 0 
           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [RecordStamp] => stdClass Object 
          (
           [AddedBy] => dbo 
          ) 

         [Premises] => stdClass Object 
          (

           [Location] => stdClass Object 
            (

             [Metric] => stdClass Object 
              (
               [Latitude] => 51.34535435345 
               [Longitude] => -0.417308 
              ) 

            ) 

           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [ScheduledStart] => 2016-11-03T07:00:00 
        ) 

      ) 

    ) 

    [2016-11-24T07:00:00] => Array 
    (
     [3] => stdClass Object 
      (
       [Job] => stdClass Object 
        (
         [ID] => 3749823749 
         [Foo] => stdClass Object 
          (
           [ID] => 0 
           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [RecordStamp] => stdClass Object 
          (
           [AddedBy] => dbo 
          ) 

         [Premises] => stdClass Object 
          (

           [Location] => stdClass Object 
            (

             [Metric] => stdClass Object 
              (
               [Latitude] => 51.345345435 
               [Longitude] => -0.417308 
              ) 

            ) 

           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [ScheduledStart] => 2016-11-24T07:00:00 
        ) 

      ) 

     [5] => stdClass Object 
      (
       [Job] => stdClass Object 
        (
         [ID] => 4792874923874 
         [Foo] => stdClass Object 
          (
           [ID] => 0 
           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [RecordStamp] => stdClass Object 
          (
           [AddedBy] => dbo 
          ) 

         [Premises] => stdClass Object 
          (

           [Location] => stdClass Object 
            (

             [Metric] => stdClass Object 
              (
               [Latitude] => 51.3453453444 
               [Longitude] => -0.417308 
              ) 

            ) 

           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [ScheduledStart] => 2016-11-24T07:00:00 
        ) 

      ) 

     [9] => stdClass Object 
      (
       [Job] => stdClass Object 
        (
         [ID] => 9943386 
         [Foo] => stdClass Object 
          (
           [ID] => 0 
           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [RecordStamp] => stdClass Object 
          (
           [AddedBy] => dbo 
          ) 

         [Premises] => stdClass Object 
          (

           [Location] => stdClass Object 
            (

             [Metric] => stdClass Object 
              (
               [Latitude] => 51.34534534534 
               [Longitude] => -0.417308 
              ) 

            ) 

           [RecordStamp] => stdClass Object 
            (
             [AddedBy] => dbo 
            ) 

          ) 

         [ScheduledStart] => 2016-11-24T07:00:00 
        ) 

      ) 

    ) 
) 

foreach를 사용하여이 배열을 반복 할 수 있습니까?

더 효율적인 솔루션을 원한다면 배열을 조작하라는 제안을받을 수 있습니다.

답변

1

두 개의 배열 레이어가 있습니다. 첫 번째는 날짜를 인덱스로 사용하고 두 번째는 숫자를 인덱스로 사용합니다. 두 번째 배열의 값은 중첩 된 객체입니다.

foreach ($arr as $date => $v) { 
    echo "date: ".$date."<br>"; 
    foreach ($v as $number => $job) { 
    echo "number: ".$number."<br>"; 
    echo $job->ID."<br>"; 
    echo $job->Foo->ID."<br>"; 
    echo $job->Foo->RecordStamp->AddedBy."<br>"; 
    echo $job->Premises->Location->Metric->Latitude."<br>"; 
    echo $job->ScheduledStart."<br>"; 
    } 
}