Mảng đối tượng trong PHP là gì?

Trong bài đăng này, tôi muốn giới thiệu một tính năng hiếm khi được sử dụng trong PHP, cho phép các đối tượng PHP của chúng ta có các hành vi của một mảng. Điều đó có thể thực hiện được bằng cách tạo một lớp để triển khai giao diện <?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 8. Trên thực tế, tính năng này có thể thấy khá thường xuyên trong nhiều PHP framework, đặc biệt là Laravel. Trước khi tìm hiểu chi tiết về tính năng này, chúng ta hãy xem lại kiến ​​thức rất cơ bản của chúng ta về các đối tượng và mảng PHP

1. Mảng

Để tạo một mảng, hãy sử dụng cấu trúc ngôn ngữ <?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 9

array( key => value, key2 => value2, ... )

Kể từ PHP 5. 4, chúng ta có thể sử dụng phiên bản ngắn array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 0 để thay thế

Ví dụ #1 Tạo một mảng đơn giản

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ] //The comma after the last array element is optional and can be omitted.

Đối với hầu hết mọi người đến từ một ngôn ngữ OO khác, một điều khá thú vị về mảng trong PHP là không có sự phân biệt giữa mảng được lập chỉ mục và mảng kết hợp. Bạn sử dụng cùng một cú pháp để tạo cả hai loại mảng. Nếu bạn không chuyển một cặp khóa-giá trị vào cấu trúc, PHP sẽ sử dụng số gia của khóa số nguyên lớn nhất đã sử dụng trước đó. Hơn nữa, bạn có thể chỉ định khóa cho chỉ một số phần tử

Ví dụ #2 Hành vi duy nhất của mảng trong PHP

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array);

Ví dụ trên sẽ xuất ra

array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" }

Tại thời điểm này, một mảng giống như một hộp các phần tử, vì vậy cú pháp array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 0 trông thực sự giống như một hộp. Để truy cập những thứ được lưu trữ trong hộp đó, chúng tôi sử dụng cú pháp dấu ngoặc vuông array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 2

Ví dụ #3 Truy cập các phần tử mảng

<?php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); var_dump($array[42]); var_dump($array["multi"]["dimensional"]["array"]); ?>

Ví dụ trên sẽ xuất ra

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 0

Nếu bạn đến từ thế giới Javascript, bạn có thể biết một tính năng gọi là phá hủy cho phép chúng tôi chia mảng thành các biến lưu trữ các giá trị tương ứng. Trong PHP, chúng ta có thể sử dụng cấu trúc ngôn ngữ array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 3

Ví dụ #4 Phá hủy

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 2

Cuối cùng, làm cách nào để sửa đổi mảng hiện có?

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 3

nếu array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 4 chưa tồn tại, nó sẽ được tạo, vì vậy đây cũng là một cách khác để tạo một mảng (nhưng điều này không được khuyến khích). Để thay đổi một giá trị nhất định, hãy gán một giá trị mới cho phần tử đó bằng khóa của nó. Để xóa một cặp khóa/giá trị, hãy gọi hàm array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 5 trên đó

Ví dụ #5 Sửa đổi mảng hiện có

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 6

Như đã đề cập ở trên, nếu không có khóa nào được chỉ định, giá trị tối đa của các chỉ mục số nguyên hiện có sẽ được lấy và khóa mới sẽ là giá trị tối đa đó cộng với 1 (nhưng ít nhất là 0). Nếu chưa có chỉ số nguyên nào tồn tại, khóa sẽ là 0 (không)

2. Vật

Giống như mảng, đối tượng chỉ là một cách khác để nhóm dữ liệu, nhưng hơn thế nữa, đối tượng có thể chứa các hàm (mảng cũng có thể, nhưng chúng ta hiếm khi làm điều đó)

Để tạo một đối tượng, trước tiên chúng ta phải định nghĩa một lớp và sử dụng từ khóa array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 6

Ví dụ #6 Tạo một đối tượng

<?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 8

Không giống như mảng, không có lối tắt nào cho việc đó, trong Javascript chúng ta có thể làm những việc như array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 7, nhưng điều đó là không thể trong PHP. Để truy cập các thành viên của lớp (thuộc tính, phương thức), chúng ta sử dụng cú pháp array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } 8

Ví dụ #7 Truy cập các thành viên của lớp

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ] //The comma after the last array element is optional and can be omitted. 0

3. truy cập mảng

Sau khi lướt qua một số kiến ​​thức cơ bản về mảng và đối tượng trong PHP, chúng ta hãy chuyển sang trọng tâm chính của bài đăng này, giao diện <?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 8. Đây là nơi phép màu xảy ra. Bằng cách triển khai tất cả các phương thức được xác định trong giao diện này, đối tượng của chúng ta sẽ có các hành vi của một mảng. Giao diện có 4 phương thức cần thực hiện

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ] //The comma after the last array element is optional and can be omitted. 1

Hãy xem một ví dụ về việc triển khai giao diện đó

Ví dụ #8 Thực hiện

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ] //The comma after the last array element is optional and can be omitted. 2

Bây giờ hãy xem chúng ta sẽ sử dụng nó như thế nào

Ví dụ #9 Cách sử dụng

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ] //The comma after the last array element is optional and can be omitted. 3

4. Phần kết luận

Đối với tôi, tính năng <?php $array = array( "a", "b", 6 => "c", "d", ); var_dump($array); 8 này thực sự là một điều tuyệt vời. Đây là lần đầu tiên tôi thấy một thứ như thế này, có lẽ tính năng này cũng đã tồn tại ở các ngôn ngữ khác. Trong một chương trình hàng ngày bình thường, tôi nghĩ chúng ta hiếm khi gặp tình huống cần sử dụng tính năng này. Đối với tôi, tôi bắt gặp tính năng này khi đọc mã nguồn của Laravel, lớp <?php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); var_dump($array[42]); var_dump($array["multi"]["dimensional"]["array"]); ?> 1, cụ thể hơn

Hiện tại, đối tượng của chúng ta chỉ hoạt động giống như một mảng khi truy cập và thêm/xóa mọi thứ. Có thể trong bài tới mình sẽ viết về cách lặp qua một đối tượng giống như với mảng. Cảm ơn vì đã đọc

Mảng đối tượng nghĩa là gì?

Một mảng các đối tượng, tất cả các phần tử của chúng thuộc cùng một lớp , có thể được khai báo giống như một mảng của bất kỳ phần tử dựng sẵn nào . Mỗi phần tử của mảng là một đối tượng của lớp đó. Có thể khai báo các mảng đối tượng theo cách này nhấn mạnh thực tế rằng một lớp tương tự như một kiểu.

Bạn có thể có một mảng các đối tượng trong PHP không?

Có, có thể có mảng đối tượng trong PHP . Chúng ta có phải tiếp tục tăng chỉ số hàm tạo trong myObject() mỗi khi chúng ta muốn thêm một đối tượng mới vào mảng hay nó là tùy chọn? .

3 loại mảng PHP là gì?

Trong PHP, có ba loại mảng. .
Mảng được lập chỉ mục - Mảng có chỉ mục số
Mảng kết hợp - Mảng có khóa được đặt tên
Mảng nhiều chiều - Mảng chứa một hoặc nhiều mảng

Làm cách nào để gọi một mảng đối tượng trong PHP?

Nếu nó được gọi là một mảng hoặc đối tượng phụ thuộc vào phần ngoài cùng của biến của bạn. Vì vậy, [new StdClass] là một mảng ngay cả khi nó có các đối tượng (lồng nhau) bên trong nó và $object->property = array(); . Và nếu bạn không chắc mình có đối tượng hay mảng hay không, chỉ cần sử dụng gettype()

Chủ đề