当我试图用c创建一个php扩展名并返回一个数组时,我遇到了一个棘手的问题。我做了一些教程说的,但我需要返回一个数组。在所有示例中,array_init(return_array)都被称为初始化返回数组,但我发现没有声明return_array。因此,我得到了错误:error C2065: 'return_array' : undeclared identifier,,但是,如果我添加:
zval * return_array ;
但是它会抛出,你的应用程序不能读取地址0000f,为什么?
你能给我一个包含数组返回数百万次的详细扩展示例吗?
发布于 2011-01-22 19:39:16
如果要返回数组,只需初始化return_value
array_init(return_value);return_value是由PHP_FUNCTION()宏声明的zval*。
发布于 2015-08-04 13:24:33
下面的代码给出了返回数组的示例:
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
)
)https://stackoverflow.com/questions/4632298
复制相似问题