Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.php > #4903
| 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> |
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 | Next — Previous in thread | Find similar
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