cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyalin objek tanpa rujukan?

<p>Adalah didokumentasikan dengan baik bahawa objek PHP5 OOP diluluskan secara rujukan secara lalai. Jika ini adalah lalai, nampaknya saya ada cara bukan lalai untuk menyalin tanpa rujukan, bagaimana pula? ? </p> <pre class="brush:php;toolbar:false;">function refObj($object){ foreach($objek sebagai &$o){ $o = 'ini akan bertukar kepada ' $o; } pulangkan $objek; } $obj = StdClass baharu; $obj->x = 'x'; $obj->y = 'y'; $x = $obj; print_r($x) // object(stdClass)#1 (3) { // ["x"]=> // ["y"]=> // } // $obj = refObj($obj); // tidak perlu melakukan ini kerana refObj($obj); // $obj diluluskan dengan rujukan print_r($x) // object(stdClass)#1 (3) { // ["x"]=> rentetan(1) "ini akan bertukar kepada x" // ["y"]=> rentetan(1) "ini akan bertukar kepada y" // }</pre> <p>Pada ketika ini saya menjangkakan <code>$x</code> menjadi <code>$obj</code>, tetapi sudah tentu tidak. Adakah terdapat cara mudah untuk melakukan ini atau adakah saya perlu menulis kod seperti ini</p>
P粉805922437P粉805922437459 hari yang lalu442

membalas semua(2)saya akan balas

  • P粉038161873
  • P粉713846879

    P粉7138468792023-08-25 00:31:47

    <?php
    $x = clone($obj);

    Jadi ia sepatutnya kelihatan seperti ini:

    <?php
    function refObj($object){
        foreach($object as &$o){
            $o = 'this will change to ' . $o;
        }
    
        return $object;
    }
    
    $obj = new StdClass;
    $obj->x = 'x';
    $obj->y = 'y';
    
    $x = clone($obj);
    
    print_r($x)
    
    refObj($obj); // $obj is passed by reference
    
    print_r($x)

    balas
    0
  • Batalbalas