2011-01-08 3 views
1

Я получаю сложную проблему, когда пытаюсь создать расширение php с помощью c, с возвращенным массивом. Я как-то сказал несколько уроков, но мне нужно вернуть массив. array_init(return_array) во всех примерах сказано инициализировать возвращаемый массив, но я нигде не объявляю return_array. Таким образом, я получил ошибку: error C2065: 'return_array' : undeclared identifier, однако, если я добавлю:Проблемы с расширением Php

zval * return_array ;

Но он бросает ваше приложение не может прочитать адрес 000000f почему?

Можете ли вы дать мне подробный пример расширения, содержащий массив возвращающих .... спасибо миллионы раз

+0

взгляд на почти любой функции который возвращает массив. можете ли вы опубликовать полный код? – mfonda

ответ

0

Если вы хотите вернуть массив, просто инициализировать return_value:

array_init(return_value); 

return_value является zval* , объявленный макросом 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 
    ) 
) 
Смежные вопросы