PHP - Ds\Collection::copy() 函数



PHP 的Ds\Collection::copy() 函数用于创建当前集合(如向量、集合等)的浅拷贝。

当此函数在集合上调用时,会创建该集合的浅拷贝,并在输出中返回相同的浅拷贝。

集合的浅拷贝是一个副本,其中属性与从中创建副本的源对象的属性共享相同的引用。

语法

以下是 PHP Ds\Collection::copy() 函数的语法:

abstract public Ds\Collection Ds\Collection::copy( void )

参数

此函数不接受任何参数。

返回值

此函数返回一个集合,它是当前集合的浅拷贝。

示例 1

以下程序演示了 PHP Ds\Collection::copy() 函数的使用:

<?php 
   $collection = new \Ds\Vector([1, 2, 3, 4, 5]);
   echo "The original collection elements: \n";
   print_r($collection);
   #using copy() function
   $res = $collection->copy();
   echo "The shallow copy of this original collection is: \n";
   var_dump($res);  
?>

输出

以上程序产生以下输出:

The original collection elements:
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
The shallow copy of this original collection is:
object(Ds\Vector)#2 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}

示例 2

以下是 PHP Ds\Collection::copy() 函数的另一个示例。我们使用此函数来创建此向量的浅拷贝(集合):

<?php 
   $vect = new \Ds\Vector();
   echo "Before adding elements: \n";
   print_r($vect);
   $vect->push(121);
   $vect->push(272);
   $vect->push(31);
   $vect->push(26);
   $vect->push(99);
   $vect->push(81);
   echo "After adding elements: \n";
   print_r($vect);
   #using copy() function
   $res = $vect->copy();
   echo "The shallow copy of this original collection is: \n";
   print_r($res);
?>

输出

执行上述程序后,它会生成以下输出:

Before adding elements:
Ds\Vector Object
(
)
After adding elements:
Ds\Vector Object
(
    [0] => 121
    [1] => 272
    [2] => 31
    [3] => 26
    [4] => 99
    [5] => 81
)
The shallow copy of this original collection is:
Ds\Vector Object
(
    [0] => 121
    [1] => 272
    [2] => 31
    [3] => 26
    [4] => 99
    [5] => 81
)

示例 3

让我们创建一个名为 set([]) 的另一个集合,并使用相同的 copy() 函数来创建此集合 (['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']) 的浅拷贝:

<?php 
   $set = new \Ds\Set();
   $set->add('Sunday');
   $set->add('Monday');
   $set->add('Tuesday');
   $set->add('Wednesday');
   $set->add('Thursday');
   $set->add('Friday');
   $set->add('Saturday');
   echo "Original set elements are: \n";
   print_r($set);
   #using copy() function
   $res = $set->copy();
   echo "The shallow copy of this original collection is: \n";
   print_r($res);
?>

输出

执行上述程序后,它将生成以下输出:

Original set elements are:
Ds\Set Object
(
    [0] => Sunday
    [1] => Monday
    [2] => Tuesday
    [3] => Wednesday
    [4] => Thursday
    [5] => Friday
    [6] => Saturday
)
The shallow copy of this original collection is:
Ds\Set Object
(
    [0] => Sunday
    [1] => Monday
    [2] => Tuesday
    [3] => Wednesday
    [4] => Thursday
    [5] => Friday
    [6] => Saturday
)

示例 4

在下面的示例中,我们使用 PHP Ds\Collection::copy() 创建此向量的浅拷贝(集合)(["test_string", 1525, false]):

<?php
   $seq = new \Ds\Vector(["test_string", 1525, false]);
   echo "Original vector elements are: \n";
   print_r($seq);
   $res = $seq->copy();
   echo "The shallow copy of this original collection is: \n";
   var_dump($res);	
?>

输出

执行上述程序后,它会显示以下输出

Original vector elements are:
Ds\Vector Object
(
    [0] => test_string
    [1] => 1525
    [2] =>
)
The shallow copy of this original collection is:
object(Ds\Vector)#2 (3) {
  [0]=>
  string(11) "test_string"
  [1]=>
  int(1525)
  [2]=>
  bool(false)
}
php_function_reference.htm
广告