Rumah > Artikel > pembangunan bahagian belakang > Artikel ini akan membawa anda menganalisis zval php7
Zval ialah salah satu struktur data yang paling penting dalam PHP. Ia mengandungi maklumat tentang nilai dan jenis pembolehubah dalam PHP.
typedef struct _zval_struct zval;struct _zval_struct { zend_value value; /* value */ union { struct { ZEND_ENDIAN_LOHI_4( zend_uchar type, /* active type */ zend_uchar type_flags, zend_uchar const_flags, zend_uchar reserved) /* call info for EX(This) */ } v; uint32_t type_info; } u1; union { uint32_t var_flags; uint32_t next; /* hash collision chain */ uint32_t cache_slot; /* literal cache slot */ uint32_t lineno; /* line number (for ast nodes) */ uint32_t num_args; /* arguments number for EX(This) */ uint32_t fe_pos; /* foreach position */ uint32_t fe_iter_idx; /* foreach iterator index */ } u2;};
Struktur zval agak mudah dan terdiri daripada tiga bahagian:
Untuk paparan yang lebih intuitif Seterusnya, mari lihat struktur zval dan nilai medan teras, seperti yang ditunjukkan dalam gambar di atas.
Penjelasan untuk u1.v.type:
zend_value bagi zval ditakrifkan seperti berikut:
typedef union _zend_value { zend_long lval; /* long value */ double dval; /* double value */ zend_refcounted *counted; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; zend_reference *ref; zend_ast_ref *ast; zval *zv; void *ptr; zend_class_entry *ce; zend_function *func; struct { uint32_t w1; uint32_t w2; } ww; } zend_value;
Dalam zval:
jadi zval diduduki 16 bait . Sejajar dengan itu, dalam php5, saiz zval ialah 48 bait, yang sememangnya merupakan peningkatan yang besar.
boleh dibezakan secara langsung mengikut zval.u1.v.type tanpa penyertaan zend_value
disimpan terus dalam lval atau dval zend_value.
Gunakan penuding yang sepadan dengan zend_value untuk menunjuk ke struktur khususnya.
Contohnya, struktur jenis rentetan ialah
struct _zend_string { zend_refcounted_h gc; zend_ulong h; /* hash value */ size_t len; char val[1]; };
Organisasi memori pembolehubah rentetan adalah seperti yang ditunjukkan dalam rajah di bawah, zval.value.str menunjuk kepada struktur zend_string .
Zval ialah salah satu struktur data terpenting dalam PHP, yang mengandungi nilai pembolehubah dalam PHP dan maklumat berkaitan jenis.
Kajian yang disyorkan: "Tutorial PHP7"
Atas ialah kandungan terperinci Artikel ini akan membawa anda menganalisis zval php7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!