Hướng dẫn add value to object php - thêm giá trị cho đối tượng php

Điều này phải đơn giản, nhưng dường như tôi không thể tìm thấy câu trả lời ....

Tôi có một đối tượng STDCLASS chung

$foo = new StdClass[];
$foo->bar = '1234';
5 không có thuộc tính. Tôi muốn thêm một thuộc tính mới
$foo = new StdClass[];
$foo->bar = '1234';
6 vào nó chưa được xác định. Nếu tôi làm điều này:

$foo = new StdClass[];
$foo->bar = '1234';

PHP trong chế độ nghiêm ngặt phàn nàn.

Cách thích hợp [bên ngoài khai báo lớp] để thêm thuộc tính vào một đối tượng đã khởi tạo là gì?

Lưu ý: Tôi muốn giải pháp hoạt động với đối tượng PHP chung của loại stdclass.

Một chút nền tảng về vấn đề này. Tôi đang giải mã một chuỗi JSON là một loạt các đối tượng JSON.

$foo = new StdClass[];
$foo->bar = '1234';
7 tạo ra một mảng đối tượng STDClass. Tôi cần điều khiển các đối tượng này và thêm một thuộc tính cho từng đối tượng.

Hakre

187K48 Huy hiệu vàng419 Huy hiệu bạc804 Huy hiệu đồng48 gold badges419 silver badges804 bronze badges

hỏi ngày 23 tháng 7 năm 2012 lúc 18:32Jul 23, 2012 at 18:32

4

Nếu bạn hoàn toàn phải thêm thuộc tính vào đối tượng, tôi tin rằng bạn có thể chọn nó dưới dạng mảng, thêm thuộc tính của bạn [làm khóa mảng mới], sau đó chọn nó trở lại làm đối tượng. Lần duy nhất bạn chạy vào các đối tượng

$foo = new StdClass[];
$foo->bar = '1234';
8 [tôi tin] là khi bạn chọn một mảng làm đối tượng hoặc khi bạn tạo một đối tượng
$foo = new StdClass[];
$foo->bar = '1234';
8 mới từ đầu [và tất nhiên là khi bạn
$foo = new StdClass[];
$foo->bar = '1234';
7 điều gì đó - ngớ ngẩn tôi đã quên!].

Thay vì:

$foo = new StdClass[];
$foo->bar = '1234';

Bạn sẽ làm:

$foo = array['bar' => '1234'];
$foo = [object]$foo;

Hoặc nếu bạn đã có một đối tượng STDClass hiện có:

$foo = [array]$foo;
$foo['bar'] = '1234';
$foo = [object]$foo;

Cũng như một lớp lót 1:

$foo = [object] array_merge[ [array]$foo, array[ 'bar' => '1234' ] ];

Đã trả lời ngày 23 tháng 7 năm 2012 lúc 18:45Jul 23, 2012 at 18:45

WwwwwwWWW

9.4741 Huy hiệu vàng28 Huy hiệu bạc32 Huy hiệu đồng1 gold badge28 silver badges32 bronze badges

6

Làm như thế này:

$foo = new stdClass[];
$foo->{"bar"} = '1234';

bây giờ cố gắng:

echo $foo->bar; // should display 1234

Đã trả lời ngày 15 tháng 9 năm 2015 lúc 8:55Sep 15, 2015 at 8:55

JM R.JM R.JM R.

1.5311 huy hiệu vàng9 Huy hiệu bạc1 gold badge9 silver badges4 bronze badges

7

Nếu bạn muốn chỉnh sửa JSON được giải mã, hãy thử lấy nó như một mảng kết hợp thay vì một mảng các đối tượng.

$data = json_decode[$json, TRUE];

Đã trả lời ngày 23 tháng 7 năm 2012 lúc 18:57Jul 23, 2012 at 18:57

gen_Ericgen_Ericgen_Eric

Phim thương hiệu vàng 218K4040 gold badges295 silver badges334 bronze badges

Đây là một cách khác:

$foo = [object]null; //create an empty object
$foo->bar = "12345";

echo $foo->bar; //12345

Đã trả lời ngày 17 tháng 8 năm 2016 lúc 18:18Aug 17, 2016 at 18:18

RagnarragnarRagnar

4.1431 Huy hiệu vàng25 Huy hiệu bạc39 Huy hiệu đồng1 gold badge25 silver badges39 bronze badges

Bạn nên sử dụng các phương thức ma thuật __set và __get. Ví dụ đơn giản:

class Foo
{
    //This array stores your properties
private $content = array[];

public function __set[$key, $value]
{
            //Perform data validation here before inserting data
    $this->content[$key] = $value;
    return $this;
}

public function __get[$value]
{       //You might want to check that the data exists here
    return $this->$content[$value];
}

}

Tất nhiên, đừng sử dụng ví dụ này như thế này: không có bảo mật nào cả :]

Chỉnh sửa: Xem nhận xét của bạn, đây có thể là một giải pháp thay thế dựa trên sự phản ánh và một người trang trí:

$foo = new StdClass[];
$foo->bar = '1234';
0

Tái bút: Tôi đã không kiểm tra mã của mình, chỉ là ý tưởng chung ...

Đã trả lời ngày 23 tháng 7 năm 2012 lúc 18:37Jul 23, 2012 at 18:37

2

Tôi không biết liệu phiên bản mới của PHP mới hơn, nhưng điều này hoạt động. Tôi đang sử dụng Php 5.6

$foo = new StdClass[];
$foo->bar = '1234';
1

Đây là kết quả. Phương thức lưu thực sự có được thuộc tính mới

$foo = new StdClass[];
$foo->bar = '1234';
2

Đã trả lời ngày 18 tháng 12 năm 2015 lúc 7:49Dec 18, 2015 at 7:49

GangagangaGanga

Phù hiệu bằng đồng 1133 bronze badges

1

Có, có thể tự động thêm các thuộc tính vào đối tượng PHP.

Điều này rất hữu ích khi nhận được một phần đối tượng từ JavaScript.

Phía JavaScript:

$foo = new StdClass[];
$foo->bar = '1234';
3

PHP bên:

$foo = new StdClass[];
$foo->bar = '1234';
4

Hoặc chỉ gửi một thuộc tính giả từ JavaScript mà bạn sẽ điền vào PHP.

Đã trả lời ngày 19 tháng 7 năm 2014 lúc 11:53Jul 19, 2014 at 11:53

Adrian Cumpanasuadrian CumpanasuAdrian Cumpanasu

1.0101 Huy hiệu vàng10 Huy hiệu bạc24 Huy hiệu đồng1 gold badge10 silver badges24 bronze badges

2

Đối tượng STDCLASS trong PHP là gì?

STDCLASS là lớp trống trong PHP được sử dụng để đúc các loại khác để đố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 được sửa đổi.the empty class in PHP which is used to cast other types to object. It is similar to Java or Python object. The stdClass is not the base class of the objects. If an object is converted to object, it is not modified.

Thuộc tính đối tượng PHP là gì?

Trong PHP, đối tượng là một loại dữ liệu hỗn hợp [cùng với các mảng].Giá trị của nhiều loại có thể được lưu trữ cùng nhau trong một biến duy nhất.Đối tượng là một thể hiện của lớp tích hợp hoặc người dùng được xác định.Ngoài các thuộc tính, lớp xác định chức năng được liên kết với dữ liệu.class defines functionality associated with data.

Làm thế nào để bạn truy cập các thuộc tính của một đối tượng trong PHP?

Trong các phương thức lớp các thuộc tính không tĩnh có thể được truy cập bằng cách sử dụng-> [toán tử đối tượng]: $ this-> thuộc tính [trong đó thuộc tính là tên của thuộc tính].Thuộc tính tĩnh được truy cập bằng cách sử dụng :: [Double Colon]: Self :: $ $ thuộc tính.non-static properties may be accessed by using -> [Object Operator]: $this->property [where property is the name of the property]. Static properties are accessed by using the :: [Double Colon]: self::$property .

Làm thế nào để bạn tạo một đối tượng mới trong PHP?

Để tạo một đối tượng mới trong PHP, bạn phải sử dụng từ khóa mới.use the new keyword.

Bài Viết Liên Quan

Chủ Đề