Cách chuyển đổi mảng thành đối tượng stdClass trong PHP

stdClass là một tính năng tiện dụng do PHP cung cấp để tạo một lớp thông thường. Nó là một lớp 'trống rỗng' được xác định trước được sử dụng như một lớp tiện ích để truyền các đối tượng thuộc các loại khác. Nó không có cha mẹ, thuộc tính hoặc phương thức. Nó cũng không hỗ trợ các phương thức ma thuật và không triển khai bất kỳ giao diện nào

Mục lục

  • Tạo đối tượng stdClass
  • Tạo một đối tượng stdClass bằng cách truyền kiểu
  • Chuyển đổi một mảng thành một đối tượng
  • Chuyển đổi một đối tượng thành một mảng

Tạo đối tượng stdClass

Ví dụ

Trong ví dụ sau, stdClass được sử dụng thay vì một mảng để lưu trữ thông tin chi tiết

<?php
$obj= new stdClass();
$obj->name= 'W3schools';
$obj->extension= 'In';
var_dump($object);
?>

Đầu ra chương trình

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}

Bất cứ khi nào bạn cần một thể hiện đối tượng chung trong chương trình của mình, bạn có thể sử dụng stdClass vì khi bạn truyền bất kỳ loại nào khác cho một đối tượng, bạn sẽ nhận được một thể hiện của stdClass

  • Nếu một đối tượng được chuyển đổi thành một đối tượng sử dụng stdClass, nó sẽ không bị sửa đổi
  • Nếu giá trị đã cho là NULL, phiên bản mới cũng sẽ trống
  • Mảng chuyển đổi thành một đối tượng có thuộc tính được đặt tên theo khóa và giá trị liên quan. Nó giống như sự thay thế cho các mảng kết hợp
  • Thành viên có tên vô hướng sẽ chứa giá trị cho bất kỳ loại giá trị nào khác

Tạo một đối tượng stdClass bằng cách truyền kiểu

Ví dụ

Ví dụ sau đây cho thấy rằng giá trị sẽ có sẵn trong một thành viên có tên là Scalar khi đánh kiểu một kiểu khác vào một đối tượng

<?php 
$obj= (object) 'W3schools';
var_dump($obj); // output in scalar
?>

Đầu ra chương trình

object(stdClass)#1 (1) {
  ["scalar"]=>
  string(9) "W3schools"
}

Chuyển đổi một mảng thành một đối tượng

Ví dụ

Trong ví dụ sau, một mảng được chuyển đổi thành một đối tượng bằng cách nhập liệu

<?php 
$obj = array(
    'name'=>'W3schools',
    'Extension'=>'In',
);
$obj= (object) $obj;
var_dump($obj);
?>

Đầu ra chương trình

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["Extension"]=>
  string(2) "In"
}

Chuyển đổi một đối tượng thành một mảng

Ví dụ

Trong ví dụ sau, một đối tượng được chuyển đổi thành một mảng bằng cách nhập liệu

<?php
$obj= new stdClass();
$obj->name= 'W3schools';
$obj->extension= 'In';

$data = (array) $obj;
print_r($data);
?>

Đầu ra chương trình

Array(
  [name] => W3schools
  [extension] => In
)

PHP khác với các ngôn ngữ hướng đối tượng khác vì các lớp trong PHP không tự động dẫn xuất từ ​​bất kỳ lớp nào. Tất cả các lớp PHP là độc lập trừ khi chúng được mở rộng rõ ràng từ một lớp khác. Ở đây bạn có thể nghĩ đến việc định nghĩa một lớp mở rộng stdClass, nhưng nó sẽ không mang lại cho bạn bất kỳ lợi ích nào vì stdClass không làm gì cả

PHP stdClass() là một thứ không được ghi chép đầy đủ nhưng tôi sẽ cố gắng làm sáng tỏ vấn đề. stdClass là một đối tượng PHP mặc định không có thành viên được xác định trước. Tên stdClass được Zend sử dụng nội bộ và được bảo lưu. Vì vậy, điều đó có nghĩa là bạn không thể định nghĩa một lớp có tên stdClass trong mã PHP của mình

Nó có thể được sử dụng để khởi tạo các đối tượng chung theo cách thủ công mà sau đó bạn có thể đặt các biến thành viên, điều này rất hữu ích để chuyển các đối tượng đến các hàm hoặc phương thức khác sẽ lấy một đối tượng làm đối số. Một cách sử dụng thậm chí có nhiều khả năng hơn là truyền một mảng tới một đối tượng lấy từng giá trị trong mảng và thêm nó dưới dạng một biến thành viên có tên dựa trên khóa trong mảng

Đây là một ví dụ dưới đây chuyển đổi một mảng nhiều chiều thành một đối tượng. Điều này được thực hiện thông qua đệ quy

________số 8

  class myNumber
  {
    public $value;
  }

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
0

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
1

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
2

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
3

  class myNumber
  {
    public $value;
  }

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
5

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
1

object(stdClass)#1 (2) {
  ["name"]=>
  string(9) "W3schools"
  ["extension"]=>
  string(2) "In"
}
7

  class myNumber
  {
    public $value;
  }
0

Làm cách nào để biến một mảng thành một đối tượng trong PHP?

Để chuyển đổi một mảng thành đối tượng, stdClass() được sử dụng . stdClass() là một lớp trống, được sử dụng để chuyển các loại khác thành đối tượng. Nếu một đối tượng được chuyển đổi thành đối tượng, thì nó không bị sửa đổi. Tuy nhiên, nếu kiểu đối tượng được chuyển đổi/ép kiểu thì một thể hiện của stdClass được tạo, nếu nó không phải là NULL.

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

Tạo đối tượng stdClass . $obj= new stdClass(); $obj->name= 'W3schools'; $obj->extension= 'In'; var_dump($object); ?> Whenever you need a generic object instance in your program, you can use stdClass because when you cast any other type to an object, you will get an instance of stdClass.

Làm cách nào để truy cập mảng đối tượng stdClass trong PHP?

Đã liên kết .
PHP. Cách truy cập các giá trị phần tử mảng bằng chỉ mục mảng
lặp lại một giá trị trong Đối tượng stdClass trong một mảng trong một đối tượng
PHP - Chuyển đối tượng stdClass thành Chuỗi thành Mảng
Lặp lại qua đối tượng/mảng đa chiều
ErrorException htmlspecialchars() dự kiến ​​tham số 1 là chuỗi, mảng đã cho

Làm cách nào để chuyển đổi mảng nhiều chiều thành đối tượng trong PHP?

Sự kết hợp của các hàm mã hóa và giải mã JSON của PHP có thể thực hiện việc chuyển đổi một cách kỳ diệu. $obj = json_decode(json_encode($array)); Đầu tiên, json_encode($array) chuyển đổi toàn bộ mảng đa chiều thành chuỗi JSON. Sau đó, json_decode($string) sẽ chuyển đổi chuỗi JSON thành đối tượng stdClass.