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

Để chuyển đổi một mảng thành stdClass bằng PHP là một bước dễ dàng. Trong hướng dẫn này, chúng tôi sẽ sử dụng các cách khác nhau mà chúng tôi có thể dễ dàng đạt được kết quả mong muốn

Trước khi đi thẳng vào giải pháp, hãy hiểu một số điều về stdClass trong PHP

stdClass trong PHP là gì?

stdClass là viết tắt của Lớp tiêu chuẩn

stdClass chỉ là một lớp trống chung trong PHP HOẶC chúng ta có thể nói đó là nguyên mẫu lớp của PHP giống như Object. nguyên mẫu trong JavaScript, Đối tượng trong Java HOẶC đối tượng trong Python

Ở đây, cần lưu ý rằng mặc dù có lớp chung, nhưng stdClass KHÔNG phải là lớp cơ sở cho các đối tượng trong PHP và chúng ta có thể chứng minh điều này bằng cách sử dụng từ khóa instanceof


class nature{}
$objNature= new nature();
if ($objNature instanceof stdClass){
    echo 'Yes';
} else {
    echo 'No';
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

// OUTPUT

No

Điều này làm rõ rằng stdClass không phải là lớp cơ sở cho các đối tượng trong PHP

Bây giờ, chúng ta sẽ thấy những cách hữu ích khác nhau để chuyển đổi một mảng thành stdClass

3 cách khác nhau để chuyển đổi mảng thành stdClass

  • Sử dụng Typecast
  • Sử dụng chức năng tùy chỉnh
  • Sử dụng json_encode() và json_decode()

Giải pháp 1. Sử dụng typecast/Type Juggling

Đánh máy một mảng thành một đối tượng stdClass là cách dễ nhất để đạt được. Nó sẽ chuyển đổi giá trị của một kiểu dữ liệu thành một kiểu dữ liệu khác


$empInfo = array(
    'name'=>'John',
    'address'=>'Houston',
);
$empInfoObj = (object) $empInfo;
print_r($empInfoObj);

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

// OUTPUT

stdClass Object 
(
   [name] => John 
   [address] => Houston 
)

Ở đây, chúng tôi đã xác định một mảng

// OUTPUT

No
0 trong đó chúng tôi đã xác định 3 khóa và các giá trị được liên kết và trong dòng tiếp theo, chúng tôi nhập mảng của mình vào một đối tượng bằng cách sử dụng tên của loại mong muốn, được viết trong ngoặc đơn trước biến sẽ được truyền

Bây giờ chúng ta có thể truy cập thuộc tính của đối tượng với cú pháp kiểu hướng đối tượng là

// OUTPUT

No
1 sẽ xuất ra John

Đây là giải pháp đơn giản nhất cho vấn đề của chúng tôi. Nhưng nếu mảng là nhiều chiều thì sao?

Hãy cập nhật mảng $empInfo của chúng ta


$empInfo = array(
    'name'=>'John',
    'address'=>'Houston',
    'employment' => array(
        'id' => '1',
        'address' => 'Los Angeles'
        )
);
$empInfoObj = (object) $empInfo;
print_r($empInfoObj);

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

// OUTPUT

stdClass Object 
( 
[name] => John 
[address] => Houston 
[employment] => Array 
     ( 
         [id] => 1 
         [address] => Los Angeles 
     ) 
)

Như chúng ta có thể thấy, một mảng được xác định bên trong khóa việc làm không được chuyển đổi thành stdClass. Vì vậy, kiểu tung hứng sẽ truyền các giá trị ở các khóa cấp độ tùy chọn chứ không phải các khóa được xác định theo mẫu lồng nhau

Vì vậy, ở đây chúng ta có thể viết chức năng tùy chỉnh của mình để giải quyết vấn đề

Giải pháp 2. Sử dụng chức năng tùy chỉnh

________số 8

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

// OUTPUT

stdClass Object 
( 
   [name] => John 
   [address] => Houston 
   [employment] => stdClass Object 
      ( 
         [id] => 1 
         [address] => Los Angeles 
      ) 
)

Ở đây, trong ví dụ trên, chúng ta đã gọi hàm

// OUTPUT

No
2 một cách đệ quy để kiểm tra mảng trong cùng có mặt (nếu có) và sau đó nhập nó vào một đối tượng

Giải pháp 3. Sử dụng json_encode() và json_decode()

// OUTPUT

No
3 và
// OUTPUT

No
4 là các hàm đặc biệt để thực hiện các thao tác trên chuỗi JSON

// OUTPUT

No
3json_encode()

Vì vậy, trước tiên, chúng tôi sẽ chuyển đổi một đối tượng thành một chuỗi JSON và sau đó sẽ chuyển đổi nó thành một đối tượng bằng cách sử dụng

// OUTPUT

No
4

// OUTPUT

No
5

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

// OUTPUT

No
6

Thay vì viết một hàm tùy chỉnh, chúng ta có thể sử dụng các hàm dựng sẵn này để có được đầu ra mong muốn và chúng ta cũng không cần phải lo lắng về phần tử mảng trong cùng vì hai hàm này sẽ đảm nhận chúng

Phần kết luận

3 cách chuyển đổi mảng thành StdClass bằng PHP này cung cấp các tùy chọn tốt hơn tùy thuộc vào yêu cầu. Hầu hết trong các khung web ngày nay, chúng ta thường xử lý phân cấp lớp. Vì vậy, chuyển đổi một mảng thành stdClass khi chạy sẽ là một lựa chọn tốt hơn

stdClass có phải là một đối tượng PHP không?

StdClass là lớp trống trong PHP được sử dụng để truyền các loại khác thành đối tượng . Nó tương tự như đối tượng Java hoặc Python. stdClass không phải là lớp cơ sở của các đối tượng. Nếu một đối tượng được chuyển đổi thành đối tượng, nó không bị sửa đổi.

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

Bạn có thể sử dụng stdClass bất cứ khi nào bạn cần một thể hiện đối tượng chung. $o=(object)NULL; -- Nếu một đối tượng được chuyển đổi thành một đối tượng, nó sẽ không bị sửa đổi. Nếu một giá trị của bất kỳ loại nào khác được chuyển đổi thành một đối tượng, thì một thể hiện mới của lớp dựng sẵn stdClass sẽ được tạo. Nếu giá trị là NULL, phiên bản mới sẽ trống.

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

Chúng ta có thể tạo nhiều đối tượng từ một lớp. Mỗi đối tượng có tất cả các thuộc tính và phương thức được định nghĩa trong lớp, nhưng chúng sẽ có các giá trị thuộc tính khác nhau. Các đối tượng của một lớp được tạo bằng từ khóa new .

Làm cách nào để in một đối tượng lớp STD trong PHP?

Nếu bạn chỉ muốn in, bạn có thể sử dụng var_dump() hoặc print_r(). var_dump($obj); . Lưu câu trả lời này