Cara menggunakan php copy array element

Bagaimana cara saya membuat duplikat array yang tepat?

Saya kesulitan menemukan informasi tentang menduplikasi array di Swift.

Saya mencoba menggunakan .copy()

var originalArray = [1, 2, 3, 4]
var duplicateArray = originalArray.copy()

Array memiliki semantik nilai penuh di Swift, jadi tidak perlu sesuatu yang mewah.

var duplicateArray = originalArray adalah yang Anda butuhkan.


Jika konten array Anda adalah tipe referensi, maka ya, ini hanya akan menyalin pointer ke objek Anda. Untuk melakukan salinan konten yang mendalam, Anda akan menggunakan map dan melakukan salinan setiap instance. Untuk kelas Foundation yang sesuai dengan protokol NSCopying, Anda dapat menggunakan metode copy():

let x = [NSMutableArray(), NSMutableArray(), NSMutableArray()]
let y = x
let z = x.map { $0.copy() }

x[0] === y[0]   // true
x[0] === z[0]   // false

Perhatikan bahwa ada jebakan di sini yang semantik nilai Swift bekerja untuk melindungi Anda dari — misalnya, karena NSArray mewakili array yang tidak dapat diubah, metode copy-nya hanya mengembalikan referensi ke dirinya sendiri, sehingga pengujian di atas akan menghasilkan hasil yang tidak terduga.

Nate benar. Jika Anda bekerja dengan array primitif, Anda hanya perlu menetapkan duplikat Array ke originalArray.

Demi kelengkapan, jika Anda mengerjakan objek NSArray, Anda akan melakukan yang berikut untuk melakukan salinan lengkap NSArray:

var originalArray = [1, 2, 3, 4] as NSArray

var duplicateArray = NSArray(array:originalArray, copyItems: true)

Ada opsi ketiga untuk jawaban Nate:

let z = x.map { $0 }  // different array with same objects

* Diedit * edit dimulai di sini

Di atas pada dasarnya sama dengan di bawah ini dan benar-benar menggunakan operator kesetaraan di bawah ini akan berperforma lebih baik karena array tidak akan disalin kecuali diubah (ini adalah dengan desain).

let z = x

Baca lebih lanjut di sini: https://developer.Apple.com/Swift/blog/?id=1

* Diedit * edit berakhir di sini

menambah atau menghapus array ini tidak akan mempengaruhi array asli. Namun, mengubah salah satu properti objek apa pun yang dipegang array akan terlihat dalam array asli. Karena objek dalam array bukan salinan (dengan asumsi array menahan objek, bukan angka primitif).

Untuk objek normal yang dapat dilakukan adalah mengimplementasikan protokol yang mendukung penyalinan, dan membuat kelas objek mengimplementasikan protokol ini seperti ini:

protocol Copying {
    init(original: Self)
}

extension Copying {
    func copy() -> Self {
        return Self.init(original: self)
    }
}

Dan kemudian ekstensi Array untuk kloning:

extension Array where Element: Copying {
    func clone() -> Array {
        var copiedArray = Array<Element>()
        for element in self {
            copiedArray.append(element.copy())
        }
        return copiedArray
    }
}

dan itu cukup banyak, untuk melihat kode dan sampel periksa ini Gist

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    The getArrayCopy() function of the ArrayObject class in PHP is used to create a copy of this ArrayObject. This function returns the copy of the array present in this ArrayObject.

    Syntax:

    array getArrayCopy() 
    

    Parameters: This function does not accepts any parameters.

    Return Value: This function returns an array which is the copy of the array in this ArrayObject.

    Below programs illustrate the above function:

    Program 1:

    <?php

    $arr = array("a" => "geeks", "b" => "are", "c" => "awesome");

    $arrObject = new ArrayObject($arr);

    $copyArr = $arrObject->getArrayCopy();

    print_r($copyArr);

    ?>

    Output:

    Array
    (
        [a] => geeks
        [b] => are
         => awesome
    )
    

    Program 2:

    <?php

    $arr = array("a" => "Welcome", "b" => "2", "d" => "GFG");

    $arrObject = new ArrayObject($arr);

    $copyArr = $arrObject->getArrayCopy();

    print_r($copyArr);

    ?>

    Output:

    Array
    (
        [a] => Welcome
        [b] => 2
        [d] => GFG
    )
    

    Reference: http://php.net/manual/en/arrayobject.exchangearray.php