Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.php > #4903

Re: array[] überschreibt alle Werte

From Arno Welzel <usenet@arnowelzel.de>
Newsgroups de.comp.lang.php
Subject Re: array[] überschreibt alle Werte
Date 2023-02-19 01:32 +0100
Message-ID <k5d913Ft0djU12@mid.individual.net> (permalink)
References <ts4s95$lf1g$1@gwaiyur.mb-net.net>

Show all headers | View raw


Jan Novak, 2023-02-10 08:38:

> Hallo,
> 
> ich habe ein sehr seltsames Problem mit eine Grundfunktion von PHP:
> 
> public function getFilesFor($dir=CFG["tempdir"], $files=array(), 
> $jsonOutput=true){
> 
>      $File2 = new File2();
>      $myRet=array();
>      foreach ($files as $file) {
>        $f=$File2->createO5File($dir."/".$file);
> //dd ist eine debug Ausgabe mit <pre>print_r(var) </pre>
>        dd($f); // hier kommt das korrekte File2 Objekt an
>        //array_push ($myRet, $f); // das funktioniert nicht
>        $myRet[]=$f;               // das auch nicht
>        dd($myRet); //hier wird zwar ein neues Objekt in das array 
> addiert, allerdings werden alle Elemente im Array mit dem letzten 
> hinzugefügten File2 Objekt überschrieben
>      }
> //das myret enthält die Anzahl der Datensätze aus der forech Schleife 
> aber alle sind die gleichen und zwar das jeweils zuletzt angefügte Element
>      return $myRet;
>    }
> 
> Nochmal in kurz:
> Ich bekomme aus einer Funktion ein Objekt, welches ich in ein array 
> addieren will. Am Ende enthält das Array die korrekte Anzahl der 
> Objekte, aber alle haben die gleichen Werte wie das zuletzt hinzugefügte 
> Objekt.

1) Lerne XDebug zu benutzen, statt mühselig debug-Ausgabe zu erzeugen.

2) PHP kennt nur Referenzen.

Je nach dem, was createO5File() genau tut, kann es sein, dass das
Ergebnis immer die selbe Referenz ist, weil $File2 ja auch immer das
gleiche Objekt bleibt und nicht jedesmal neu erzeugt wird. Deshalb hast
Du dann am Ende eben mehrfach immer wieder die selbe Referenz statt
unterschiedlicher Objekte.

-- 
Arno Welzel
https://arnowelzel.de

Back to de.comp.lang.php | Previous | NextPrevious in thread | Find similar


Thread

array[] überschreibt alle Werte Jan Novak <repcom@gmail.com> - 2023-02-10 08:38 +0100
  Re: array[] überschreibt alle Werte Jan Novak <repcom@gmail.com> - 2023-02-10 09:01 +0100
    Gelöst: array[] überschreibt alle Werte Jan Novak <repcom@gmail.com> - 2023-02-10 09:03 +0100
    Re: array[] überschreibt alle Werte Karl Pflästerer <k@rl.pflaesterer.de> - 2023-02-10 09:10 +0100
  Re: array[] überschreibt alle Werte Arno Welzel <usenet@arnowelzel.de> - 2023-02-19 01:32 +0100

csiph-web