Gumbo là đúng, đây là một ví dụ làm việc:
<?php
class Test
{
public $arr = array();
public $obj = null;
}
$a = new Test();
$a->arr[]->foo = 1234;
$a->arr[]->bar = 'test';
var_dump($a->arr);
// even more weird on null objects
$a->obj->foobar = 'obj was null!';
var_dump($a->obj);
lợi nhuận:
array(2) {
[0]=>
object(stdClass)#2 (1) {
["foo"]=>
int(1234)
}
[1]=>
object(stdClass)#3 (1) {
["bar"]=>
string(4) "test"
}
}
object(stdClass)#4 (1) {
["foobar"]=>
string(13) "obj was null!"
}
chỉnh sửa: Được rồi, tôi tìm thấy một cái gì đó liên quan trong cuốn hướng dẫn php về điều này:
Nếu một đối tượng được chuyển đổi thành một đối tượng, nó sẽ không được 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 cá thể mới của lớp dựng sẵn stdClass được tạo ra. Nếu giá trị là NULL, cá thể mới sẽ trống. (source)
Vì vậy, sử dụng cú pháp ->
chuyển đổi điều vào một đối tượng. Trong ví dụ trên $obj
là null, do đó, một phiên bản trống mới, trống được tạo và thành viên foobar
được đặt.
Khi xem ví dụ mảng, arr[]
trước tiên tạo thành phần mảng mới (trống), sau đó được chuyển đổi thành đối tượng trống vì cú pháp ->
và biến thành viên được đặt.
Mọi thứ cụ thể hơn? Bạn đã thấy phần nào của cú pháp? –
Tôi đoán nó là Phonenumbers [] -> phonenumber phần – Htbaa
Điều này thực sự không ném một lỗi? : o Bạn có thể cung cấp thêm một chút về mã, đặc biệt là định nghĩa của 'Phonenumbers' trong lớp? – poke