当我尝试使用c创建一个带有数组的php扩展时,我遇到了一个棘手的问题。
我做的一些教程说,但我需要返回一个数组。
据说所有例子中的array_init(return_array)
都初始化了一个返回数组,但我发现return_array
没有声明。所以,我得到了错误:
error C2065: 'return_array' : undeclared identifier
,但是,如果我添加:
zval * return_array ;
但它会抛出您的应用无法读取地址000000f 为什么呢?
你能给我一个详细的扩展示例,其中包含数组返回.... thanx数百万次
答案 0 :(得分:0)
如果要返回数组,只需初始化return_value
:
array_init(return_value);
return_value
是zval*
,由PHP_FUNCTION()
宏声明。
答案 1 :(得分:0)
以下代码给出了返回数组的示例:
array_init(return_value);
add_index_long(rturn_value,0,10);
add_index_stringl(return_value,1,"test",1);
zval * record;
MAKE_STD_ZVAL(record);
array_init(record);
add_assoc_long(record,"key",1);
add_index_zval(return_value,2,record);
return;
这将在php命名空间中返回以下结果,其中包含大多数php扩展返回方案:
array(
10,
"test",
array(
"key" => 1
)
)