Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


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

Re: array[] überschreibt alle Werte

From Karl Pflästerer <k@rl.pflaesterer.de>
Newsgroups de.comp.lang.php
Subject Re: array[] überschreibt alle Werte
Date 2023-02-10 09:10 +0100
Message-ID <m1lel6lz4u.fsf@mbp.pflaesterer.de> (permalink)
References <ts4s95$lf1g$1@gwaiyur.mb-net.net> <ts4tk4$lf1g$3@gwaiyur.mb-net.net>

Show all headers | View raw


Jan Novak <repcom@gmail.com> writes:

> Am 10.02.23 um 08:38 schrieb Jan Novak:
>> 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.
>> 
>
> Kurze Ergänzung: wenn ich das File2 Objekt vor dem addieren in das myRet Array
> "dismounte" (also ein Array aus dem Objekt mache), dann klappt es und das
> myRet Array enthält korrekte Werte. Gewünscht war allerdings, dass in myRet
> File2 Objekte enthalten sind.
>
> Jan

Deine Funktion gib immer das *identische* Objekt zurück. Wenn du aus dem
Objekt ein array  machst, werden die aktuellen property Werte kopiert.

Bringe die Funktion dazu, nicht jedesmal das identsicghe Objekt (mit
anderen Werten zurückzugeben), oder clone selbst


  KP

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next 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