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マクロによって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 に答える