2011-01-08 10 views
1

Ich bekomme ein kniffliges Problem, wenn ich versuche, eine PHP-Erweiterung mit c zu erstellen, mit einem Array zurückgegeben. Ich mache wie einige Tutorials gesagt, aber ich muss ein Array zurückgeben. array_init(return_array) in allen Beispielen wird gesagt, um eine Rückgabe-Array zu initialisieren, aber ich finde nirgends die return_array wird deklariert. Also, ich habe Fehler: error C2065: 'return_array' : undeclared identifier jedoch, wenn ich hinzufügen:PHP-Erweiterungsprobleme

zval * return_array ;

Aber es wirft Ihre App nicht-Adresse 000000F lesen kann, warum?

Können Sie mir eine detaillierte Erweiterung Beispiel enthält Array-Rückkehr .... thanx Millionen mal

+0

Blick auf fast jede Funktion Das gibt ein Array zurück. Können Sie den vollständigen Code posten? – mfonda

Antwort

0

Wenn Sie das Array zurückkehren möchten, initialisieren nur return_value:

array_init(return_value); 

return_value ist ein zval* , erklärt durch das PHP_FUNCTION() Makro.

0

Der folgende Code ist ein Beispiel für Rückgabe-Array:

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; 

Dies wird die folgenden Ergebnisse in PHP Namespace zurückkehren, die die meisten PHP-Erweiterung Rückkehr Szenarien abdecken:

array(
    10, 
    "test", 
    array(
     "key" => 1 
    ) 
)