2016-11-08 1 views
0

Ich habe ein Array von Arrays, die ich Probleme mit foreach looping und bekommen Zugriff auf die Daten.PHP - Umgang mit einem Indexed Arrays

Der Array-Schlüssel hat Datumsangaben, dann hat das Array darin schlecht sortierte Indizes.

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 
        ) 

      ) 

    ) 
) 

Ist es möglich, dieses Array mit foreach im aktuellen Zustand zu durchlaufen?

Ich bin offen für den Vorschlag, das Array zu manipulieren, wenn für eine effizientere Lösung.

Antwort

1

Es gibt zwei Schichten von Arrays - die erste mit Daten als Indizes, die zweite mit Zahlen als Indizes. Die Werte der zweiten Arrays sind verschachtelte Objekte.

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