2016-04-04 16 views
2

Ich habe mit dem Durchqueren von PHP-Objekten gekämpft. Ich habe das folgende DateTime-Objekt in einem Array, habe aber Probleme beim Iterieren. Was mache ich falsch?Looping durch ein DateTime-Objekt-Array

// print_r($calendar_days); 
Array 
(
    [0] => DateTime Object 
     (
      [date] => 2016-04-06 00:00:00 
      [timezone_type] => 3 
      [timezone] => Europe/Helsinki 
     ) 

    [1] => DateTime Object 
     (
      [date] => 2016-04-13 00:00:00 
      [timezone_type] => 3 
      [timezone] => Europe/Helsinki 
     ) 

    [2] => DateTime Object 
     (
      [date] => 2016-04-20 00:00:00 
      [timezone_type] => 3 
      [timezone] => Europe/Helsinki 
     ) 

    [3] => DateTime Object 
     (
      [date] => 2016-04-27 00:00:00 
      [timezone_type] => 3 
      [timezone] => Europe/Helsinki 
     ) 

) 

PHP

<?php foreach ($calendar_days as $key => $value){ ?> 
    <a href="#"> 
    <div class="day-container"> 
     <strong> <?php echo $key->date; ?></strong> 
    </div> 
    </a> 
<?php } 

Dank.

+0

sollte es '$ value-> date;' sein. – Yash

+0

Ich habe das versucht, aber habe Nachricht: Undefinierte Eigenschaft: DateTime :: $ date – user3442612

+1

' Format ('Y-m-d H: i: s'); ?> ' –

Antwort

1

Sie finden ein Beispiel ideone here.

Im Wesentlichen versucht Ihr derzeitiger Code, auf die Elementvariable date auf dem $key des Arrays zuzugreifen, also versucht es etwas wie;

echo 0->date;

PHP versteht nicht genau, was du meinst, so dass Sie nicht die Ausgabe, die Sie erwarten, bekommen wird. Was Sie tun möchten, ist der Zugriff auf den Wert (das tatsächliche DateTime Objekt) und verwenden Sie das, um die Daten stattdessen wie folgt auszugeben;

echo $value->format('Y-m-d H:i:s');

Sie sich merken müssen, sind Sie DateTime Umgang mit Objekten, so dass nur ->date wird nicht funktionieren, wie Sie es erwarten zuzugreifen versuchen. Meines Wissens das DateTime Objekt, das Sie direkt nicht zulässt, dass seine Eigenschaften zugreifen und diese stattdessen, wenn Sie das Datum drucken möchten Sie es verwenden ist öffentliche Funktionen statt ->format()

können Sie den vollständigen Text & Tabellen finden DateTimehere

bearbeiten: Wie @barat erwähnt, werden Sie nicht mehr $key => $value jetzt brauchen, dass Sie die $key so können Sie weglassen $key zuzugreifen versuchen:

foreach ($calendar_days as $value) { ... }

+0

BTW ... Wenn Sie durch Array iterieren und keine Schlüssel brauchen, tun Sie es einfach wie folgt: foreach ($ calendar_days als $ date) {echo $ date-> format ('Ymd H: i: s ');} – barat

+0

Aye du nicht, aber da er es ursprünglich hatte, dachte ich, ich würde es einfach lassen, um den Code näher an das Original zu lassen, und nur für den Fall, dass er einen anderen Grund hatte, das '$ zu verwenden Schlüssel – Mikey

+1

Mein Kommentar war mehr zu user3442612 - Ich bin mir sicher, dass es für Sie ist Common Wissen :) – barat