1. 컨셉
Zval은 PHP 변수를 식별하고 구현하는 데 사용되는 zend의 또 다른 매우 중요한 데이터 구조입니다. PHP의 변수 값 및 유형에 대한 정보가 포함되어 있습니다.
2. 구성
type: 변수의 유형(정수, 문자열, 배열 등)을 지정합니다.
refcount&is_ref: 참조 카운팅을 구현하는 데 사용됩니다(자세한 소개는 나중에 설명).
value: 변수의 실제 데이터를 저장하는 핵심 부분
3. 예시
구조체 _zval_struct { 노동조합 { zend_long lval; /* 긴 값 */ double dval; /* 이중 값 */ zend_refcounted *계산됨; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; zend_reference *ref; zend_ast_ref *ast; zval *zv; 무효 *ptr; zend_class_entry *ce; zend_function *func; 구조체 { uint32_t w1; uint32_t w2; } 와우; } 값; 노동조합 { 구조체 { ZEND_ENDIAN_LOHI_4( zend_uchar 유형, /* 활성 유형 */ zend_uchar 유형_플래그, zend_uchar const_flags, zend_uchar 예약됨) /* EX(This)에 대한 통화 정보 */ } v; uint32_t type_info; } u1; 노동조합 { uint32_t var_flags; uint32_t next; /* 해시 충돌 체인 */ uint32_t 캐시 슬롯; /* 리터럴 캐시 슬롯 */ uint32_t lineno; /* 줄 번호(ast 노드용) */ uint32_t num_args; /* EX(This)에 대한 인수 수 */ uint32_t fe_pos; /* foreach 위치 */ uint32_t fe_iter_idx; /* foreach 반복자 인덱스 */ } u2; };
위 내용은 PHP의 Zval에 대한 소개입니다. 모든 사람에게 도움이 되기를 바랍니다.