1

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

zval * return_array ;

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

你能给我一个包含返回数组的详细扩展示例……谢谢数百万次

4

2 回答 2

0

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

array_init(return_value);

return_value是 a zval*,由PHP_FUNCTION()宏声明。

于 2011-01-22T19:39:16.773 回答
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
    )
)
于 2015-08-04T13:24:33.843 回答