我尝试在扩展中创建一个新函数,该函数使用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'? –