Làm cách nào để sao chép mảng trong PHP?

Nếu bạn cần sao chép sâu một đối tượng [có các đối tượng bên trong nó] thì bạn sẽ phải viết một phương thức __clone ma thuật cho đối tượng mà bạn sắp sao chép. Ít nhất thì nó rất lộn xộn - vì vậy hãy tránh để các đối tượng có bộ sưu tập đối tượng trừ khi bạn không cần sao chép chúng

Nếu bạn muốn sao chép tất cả các giá trị của một mảng vào một danh sách biến, bạn có thể sử dụng cấu trúc list[] ở bên trái của toán tử gán. list[] sẽ chỉ nhận các giá trị có khóa số nguyên bắt đầu từ 0. Đây là một tập lệnh PHP về cách sử dụng cấu trúc list[]

"PHP", 1=>"Basic", "One"=>"Perl", 
  0=>"Pascal", 2=>"FORTRAN", "Two"=>"Java"];
list[$first, $second, $third] = $array;
print["Test 3: The third language = $third\n"];
?>

Kịch bản này sẽ in

Test 1: The third site = Netscape
Test 2: Year = 2006
Test 3: The third language = FORTRAN

Bài kiểm tra 2 sử dụng mảng được trả về bởi hàm split[]. Thử nghiệm 3 cho thấy list[] sẽ bỏ qua mọi giá trị có khóa chuỗi

Sao chép mảng PHP là hành động sao chép một mảng PHP [bản sao sâu và bản sao nông]. Hành động này có thể được thực hiện theo nhiều cách, chẳng hạn như toán tử =, con trỏ, lớp ArrayObject và hàm do người dùng định nghĩa để sao chép một mảng với mảng con trong PHP. Có một số hàm PHP tích hợp để sao chép mảng trong PHP

Bản sao sâu PHP và bản sao nông của một mảng

Bản sao sâu là bản sao mảng có tham chiếu duy nhất và không gian dành riêng trong bộ nhớ

Một bản sao nông là một bản sao mảng với không gian bộ nhớ và tham chiếu được chia sẻ

1. Cách sao chép một mảng trong PHP bằng toán tử =

Trong PHP, tất cả các biến ngoại trừ các đối tượng được gán theo cơ chế sao chép khi ghi, trong khi mọi thứ được gán theo tham chiếu. Điều này có nghĩa là đối với các mảng có giá trị vô hướng chỉ đơn giản bằng toán hạng =. Phương pháp này là một bản sao sâu

$cars=array['fer'=>'Ferrari','ben'=>'Benz','bmw'=>'BMW'];

$cars2=$cars;

var_dump[$cars2];

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

Bạn chỉ cần gán chúng cho biến khác để lấy bản sao của mảng đó

2. Bằng con trỏ

Trong phần trước, bạn có 2 mảng khác nhau có cùng khóa và giá trị. Nhưng nếu bạn sử dụng con trỏ [&] thì bạn sẽ có một mảng có 2 tên. Phương pháp này là một bản sao nông

Hãy xem cách tạo một bản sao nông của một mảng trong PHP

$cars=array['fer'=>'Ferrari','ben'=>'Benz','bmw'=>'BMW'];

$cars2=&$cars;

var_dump[$cars2];

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

Vì bản sao là một bản sao nông, nên việc thay đổi nó sẽ ảnh hưởng đến bản gốc vì cả hai đều trỏ đến cùng một mảng nằm trong cùng một không gian bộ nhớ. Nếu bạn thay đổi một giá trị trong mảng, giá trị mảng khác sẽ bị thay đổi

$cars=array['fer'=>'Ferrari','ben'=>'Benz','bmw'=>'BMW'];

$cars2=&$cars;

$cars['vol']='Volvo';

var_dump[$cars2];

đầu ra

array [size=4]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]
  'vol' => string 'Volvo' [length=5]

Tất cả những gì bạn cần là gán tham chiếu cho một biến mới. Hãy nghĩ về một tham chiếu như một con trỏ tới vị trí bộ nhớ chính xác của mảng ban đầu

3. Theo lớp ArrayObject

Một cách khác để sao chép mảng là sử dụng lớp ArrayObject. Hàm getArrayCopy[] của lớp ArrayObject trong PHP được sử dụng để tạo một bản sao của ArrayObject này. Hàm này trả về bản sao của mảng có trong ArrayObject này

________số 8_______

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

4. Với serialize và unserialize

$cars = array['fer' => 'Ferrari', 'ben' => 'Benz', 'bmw' => 'BMW'];

$cars2 = unserialize[serialize[$cars]];

var_dump[$cars2];

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

5. Sao chép mảng bằng hàm array_replace[]

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]
0

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

6. Sao chép bằng hàm array_merge[]

Hàm này hoạt động giống như hàm array_replace[]

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]
2

đầu ra

array [size=3]
  'fer' => string 'Ferrari' [length=7]
  'ben' => string 'Benz' [length=4]
  'bmw' => string 'BMW' [length=3]

7. Cách copy mảng nhiều chiều trong PHP bằng hàm do người dùng định nghĩa [mảng và mảng con]

Mảng đa chiều đưa độ phức tạp lên một tầm cao mới. Đó là một thách thức ở chỗ nó có thể bao gồm nhiều cấp độ của các mảng con và các loại dữ liệu khác nhau. Đây là chức năng mạnh mẽ nhất để sao chép sâu một mảng và mảng con trong PHP

Làm cách nào để sao chép một mảng sang một biến khác trong PHP?

Chỉ cần gán mảng cho một biến . $array2 = $array1; .

Làm cách nào để sao chép mảng kết hợp trong PHP?

Tạo một bản sao của ArrayObject $copy = $fruitsArrayObject->getArrayCopy[]; print_r[$copy]; ?>

Làm cách nào để lưu trữ một mảng vào một mảng khác trong PHP?

Sử dụng phương thức array_push . Phương thức này đẩy phần tử mảng thứ hai trong mảng đầu tiên vào vị trí. $arr1 = mảng [1, 2]; .

Làm cách nào tôi có thể nhận được toàn bộ mảng trong PHP?

Để hiển thị cấu trúc mảng và giá trị trong PHP, chúng ta có thể sử dụng 2 hàm. Chúng ta có thể sử dụng var_dump[] hoặc print_r[] để hiển thị các giá trị của một mảng ở định dạng con người có thể đọc được hoặc để xem giá trị đầu ra của mảng chương trình.

Chủ Đề