2011-01-08 158 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 
    ) 
)