doni: Werte in mehrdimensionalem Array ändern

Hallo allerseits

Mein mehrdimensionales Array $albums schaut wie folgt aus:

Array (
 [0] => Array ( [title] => Neu [date] => 1154529168 )
 [1] => Array ( [title] => Marseillan-Plage [date] => 1154524166 )
 [2] => Array ( [title] => Spörtlä im Chloschtär [date] => 1152717281 )
 [3] => Array ( [title] => Objekte [date] => 1151665135 )
 [4] => Array ( [title] => Lumpy Nr. 1 [date] => 1151653219 )
 [5] => Array ( [title] => test 2 [date] => 1151579685 )
 [6] => Array ( [title] => Natur [date] => 1151574035 )
 [7] => Array ( [title] => Kanuweekend2006 [date] => 1151573957 )
)

Nun möchte ich die Datum-keys vom UNIX-timestamp zum europäischen Datum im Format 12.12.2006 konvertieren.

Das habe ich so probiert:

foreach ($albums as $key => $row){      $row['date'] = date("d.m.y", $row['date']);    }

Leider funktioniert das aber nicht so wirklich, d.h. es steht immernoch der UNIX-timestamp im Array und nicht mein gewünschtes Datum.

Kann mir jemand weiterhelfen?
Vielen Dank!

Gruss doni

  1. Liebe(r) doni,

    da steckt ein Denkfehler im System!

    foreach ($albums as $key => $row){ $row['date'] = date("d.m.y", $row['date']); }

    Du gibst innerhalb einer Schleife die Anweisung, dass in der (Array-)Variablen $row, die in dieser Schleife erst erzeugt wird, und die nur eine Kopie von $albums[$key] ist, ein Wert geändert wird. Anschließend wunderst Du Dich, dass $albums unverändert bleibt...

    Vergleiche einmal folgende Zeilen:

    foreach ($albums as $key => $row) {  
    // $key enthält Index zu $albums,  
    // $row enthält eine Kopie des darin abgelegten Arrays  
    // $row = array('title' => ..., 'date' => ...)  
      
    $albums[$key]['date'] = ...
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hallo Felix

      Vergleiche einmal folgende Zeilen:

      Du hast Recht, vielen Dank. Ich habe ehrlich gesagt den Code nicht 100%ig verstanden, da ich den Teil aus dem PHP-Manual habe.

      So klappts aber wunderprächtig:

      foreach ($albums as $key => $row){       $albums[$key]['date'] = date("d.m.y", $row['date']);
      }

      Vielen Dank!

      Gruss
      (der) doni

    2. echo $begrüßung;

      Ergänzung:

      foreach ($albums as $key => $row) {

      $albums[$key]['date'] = ...

        
      Falls PHP5 zur Verfügung steht, kann man aus der Kopie $row eine Referenz machen ($key braucht es dann nicht mehr).  
        
      `foreach ($albums as &$row)`{:.language-php}  
        
      Und dann klappt es wieder mit dem  
        
      `$row['date'] = ...`{:.language-php}  
        
        
      echo "$verabschiedung $name";