2011-01-08 93 views
1

当我试图用c创建一个PHP扩展,返回一个数组时,我遇到了一个棘手的问题。 我做一些教程说,但我需要返回一个数组。所有示例中的 array_init(return_array)被称为初始化返回数组,但我发现没有声明return_array。所以,我得到了错误: error C2065: 'return_array' : undeclared identifier,但是,如果我补充一下:Php扩展问题

zval * return_array ;

但它抛出您的应用程序无法读取地址000000f 为什么呢?

你能给我一个数组,包括返流....感谢名单上百万次的详细扩展示例

+0

看几乎所有的功能返回一个数组。你能发布完整的代码吗? – mfonda 2011-01-08 04:33:50

回答

0

如果你想返回数组,只是初始化return_value

array_init(return_value); 

return_valuezval* ,由PHP_FUNCTION()宏声明。

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 
    ) 
)