我嘗試在擴展中創建一個新函數,該函數使用array
作爲參數向添加一個條目,即數組的同一個實例並再次返回該實例。返回與傳遞給函數相同的數組(zval)
所以這是迄今爲止代碼:
PHP_FUNCTION(make_array)
{
// array_init(return_value); // Also Tried to transform default NULL to array
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &return_value) == FAILURE) {
RETURN_FALSE;
}
add_assoc_long(return_value, "answer", 42);
return;
}
但我只得到NULL
爲返回值,或者如果我取消array_init(return_value);
的return_value
是一個空數組。
那麼,爲什麼這種行爲?而我理解錯了什麼?
的'array_init(RETURN_VALUE);'是絕對必需的;-) –
@傑克同意這一點,但爲什麼我得到一個空數組作爲返回值?即使將參數數組複製到'return_value'也不起作用...我將數值'42'添加到初始化數組中,但它保持空... – TiMESPLiNTER
您是否嘗試過在ZPP中使用常規'zval *',然後使用'RETVAL_ZVAL'? –