Zend の配列操作をまとめたもの
- WBOYオリジナル
- 2016-07-29 08:58:111145ブラウズ
配列の値は zvalue_value.ht フィールドに格納され、ht は HashTable のデータです
Zend/zend_vm_execute.h ファイル内
static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op * = EX(オフライン) ;
array_init( &EX_T(opline->result.u.var).tmp_var); // 配列メモリ領域を割り当て、初期化します
if (IS_CV == IS_UNUSED) {
ZEND_VM_NEXT_OPCODE();
#if 0 || = IS_UNUSED
} else {
,,,,,,,,,,,,,,,,,,,,,,, zval *arg, uint サイズ ZEND_FILE_LINE_DC) /* {{{ */
{
ALLOC_HASHTABLE_REL (Z_ARRVAL_P(arg );
}
見たでしょうか、ハッシュテーブルの初期化 function_zend_hash_init
PHP 拡張では、次のように書くことができます:
Php_function (test) {
zval *value;
Make_std_zval (value);
Array_init (Value) ); T_SYMBOL (EG (Active_symbol_table), "STAR" , value);
要素のキーコードを追加
add_assoc_long(zval *array, char *key, long n);
add_assoc_unset(zval *array, char *key); unset 要素を追加します。
add_assoc_bool(zval *array, char *key, int b); ブール値を追加します。
add_assoc_resource(zval *array, char *key, int r); リソースを追加します。
add_assoc_double(zval *array, char *key, double d); 浮動小数点値を追加します。
add_assoc_string(zval *array, char *key, char *str, int duplicate); 文字列を追加します。重複は、この文字列を Zend の内部メモリにコピーするかどうかを示すために使用されます。
add_assoc_stringl(zval *array, char *key, char *str, uint length, int duplicate); 指定された長さの文字列を追加します。
add_assoc_zval(zval *array, char *key, zval *value); zval 構造体を追加します。
add_index_long(zval *array, uint idx, long n); 長整数要素を追加します。
add_index_unset(zval *array, uint idx); unset 要素を追加します。
add_index_bool(zval *array, uint idx, int b); ブール値を追加します。
add_index_resource(zval *array, uint idx, int r); リソースを追加します。
add_index_double(zval *array, uint idx, double d); 浮動小数点値を追加します。
add_index_string(zval *array, uint idx, char *str, int duplicate);
文字列を追加します。重複は、この文字列を Zend の内部メモリにコピーするかどうかを示すために使用されます。
add_index_stringl(zval *array, uint idx, char *str, uint length, int duplicate); 指定された長さの文字列を追加します。
add_index_zval(zval *array, uint idx, zval *value); zval 構造体を追加します。
add_next_index_long(zval *array, long n); 長整数要素を追加します。
add_next_index_unset(zval *array); unset 要素を追加します。
add_next_index_bool(zval *array, int b); ブール値を追加します。
add_next_index_resource(zval *array, int r); リソースを追加します。
add_next_index_double(zval *array, double d); 浮動小数点値を追加します。
add_next_index_string(zval *array, char *str, int duplicate); 文字列を追加します。重複は、この文字列を Zend の内部メモリにコピーするかどうかを示すために使用されます。
add_next_index_stringl(zval *array, char *str, uint length, int duplicate); 指定された長さの文字列を追加します。
add_next_index_zval(zval *array, zval *value); zval 構造体を追加します。 別の配列、オブジェクト、またはデータのストリームを追加します。
上記は、さまざまな側面を含む zend の配列操作の紹介です。PHP チュートリアルに興味のある友人に役立つことを願っています。
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。