variable "klonen"

  • geschlossen

  • corema
  • 1264 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • variable "klonen"

    aloha
    ich steh grad vor einem problem.
    und zwar möchte ich gerne eine kopie von einer variable erstellen

    PHP-Quellcode

    1. $bla = 3
    2. $blub = $bla
    erstellt ja leider nur eine referenz zu $bla
    ich würde aber gerne einen eigenen speicherplatz für $blub reservieren, in dem der selbe wert drin steht, wie bei $bla;

    danke schon mal
    mfg corema

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von corema ()

  • Hi,
    also $blub = $bla; erstellt tatsächlich eigenen Speicherplatz für blub.
    Der Referenz-Operator in PHP ist ja &.
    PHP: References Explained - Manual
    Sprich, nur bei $blub &= $bla; zeigen beide auf den gleichen Speicherplatz ;)

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • hm..
    hier mal ein konkrestes beispiel:

    PHP-Quellcode

    1. $im = imagecreatefromjpeg($file['tmp_name']);
    2. $im_copy = $im;
    3. imagefilter($im_copy, IMG_FILTER_GRAYSCALE) or die('no gray copy');
    4. imagejpeg($im_copy,'lol.jpg');//grau
    5. imagejpeg($im,'lol2.jpg');//grau -- sollte aber farbig geblieben sein

    wenn ich nun das so mach gehts "natürlich":

    PHP-Quellcode

    1. $im = imagecreatefromjpeg($file['tmp_name']);
    2. $im_copy = imagecreatefromjpeg($file['tmp_name']);
    3. imagefilter($im_copy, IMG_FILTER_GRAYSCALE) or die('no gray copy');
    4. imagejpeg($im_copy,'lol.jpg'); // grau
    5. imagejpeg($im,'lol2.jpg');// farbig

    demnach wurde der speicher, der für $im belegt wurde durch
    imagefilter($im_copy, IMG_FILTER_GRAYSCALE)
    verändert. dem nach wurde für $im_copy kein eigener speicherplatz zur verfügung gestellt.

    ich hatt selbiges problem schonmal mit delphi...
    ne lösung hatte ich da aber auch nicht gefunden
  • Ah, GD ist dann wieder ein anderes Paar Schuhe. Hinter $im befindet sich nach imagecreate nicht das Bild, sondern eine resource-id. (Wie bei mysql_query)
    Sprich nur ein Zeiger, der auf's Bild zeigt. Wenn du den kopierst/klonst, zeigt er natürlich immer noch auf das gleiche Bild.

    Du kannst das Bild ja mit PHP: imagecopy - Manual kopieren

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword ()