Php扩展问题

时间:2011-01-08 04:16:16

标签: php c php-internals

当我尝试使用c创建一个带有数组的php扩展时,我遇到了一个棘手的问题。 我做的一些教程说,但我需要返回一个数组。 据说所有例子中的array_init(return_array)都初始化了一个返回数组,但我发现return_array没有声明。所以,我得到了错误: error C2065: 'return_array' : undeclared identifier ,但是,如果我添加:

zval * return_array ;

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

你能给我一个详细的扩展示例,其中包含数组返回.... thanx数百万次

2 个答案:

答案 0 :(得分:0)

如果要返回数组,只需初始化return_value

array_init(return_value);

return_valuezval*,由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
    )
)