Jika saya memiliki stdObject
suara $a
,.
Tentu tidak ada masalah untuk menetapkan properti baru $a
,,
$a->new_property = $xyz;
Tapi kemudian saya ingin menghapusnya, jadi unset
tidak ada gunanya di sini.
Begitu,
$a->new_property = null;
semacam itu. Tetapi apakah ada cara yang lebih 'elegan'?
Jawaban:
Ini berfungsi untuk elemen array, variabel, dan atribut objek.
Contoh:
sumber
$o=(object)array('a','b','c');
(Anda harus mengonversi objek (kembali) ke array bahkan hanya dengan mengakses properti seperti itu!)object
, bukanarray
. ;-)array
menjadiobject
? Itu tidak masuk akal (bahkan jika PHP mengizinkannya). Saya tidak akan mengatur dan menyebarkan kebiasaan pemrograman yang buruk dengan mengomentari ini :) Jangan tersinggung.unset($o->{0});
atau$k = 0; unset($o->$k);
.Ini juga bekerja secara khusus jika Anda mengulang-ulang suatu objek.
Memperbarui
Versi PHP yang lebih baru melempar kesalahan fatal
Fatal error: Cannot use object of type Object as array
seperti yang disebutkan oleh @CXJ. Jika demikian, Anda dapat menggunakan tanda kurungsumber
unset($object[$key])
berfungsi danunset($object->{$key})
tidak (lebih tepatnya,unset($object['literal_key'])
danunset($object->{'literal_key'})
). PS Hm, saya mungkin salah, dalam berpikir bahwa hal yang saya edit adalah objek, bukan arrayIni juga berfungsi jika Anda mengulang-ulang suatu objek.
Tidak perlu menggunakan tanda kurung.
sumber