[PHP/C++] waarden teruggeven in eigen extension

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met het schrijven van een eigen extensie voor PHP maar ik loop tegen onduidelijkheiden aan mbt het teruggeven van waarden vanuit C++ die in een php-script dan weer gebruikt kunnen worden.

Ik heb onderstaand voorbeeld uit een ander stuk sourcecode gehaald:
code:
1
2
3
4
5
6
7
8
zval *new_array;
MAKE_STD_ZVAL(new_array);

if(array_init(new_array) != SUCCESS)
{
    zend_prinft("fout");
}
add_assoc_string(zval *array, char *key, char *str, int duplicate);()


Dit gaat geloof ik wel goed (geeft geen compile foutmeldingen) maar nu vraag ik me af hoe ik deze array kan returnen. Ergens heb ik gelezen dat het via array_init() moet maar dat lijkt me stug..

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Met array_init maak je een array aan. Dat zet natuurlijk niet de return-waarde, maar je moet de 'return_value' parameter in de manual erg letterlijk nemen. Er is namelijk een variabele in je functie met de naam return_value, en daarin zet je de terug te geven waarde. array_init (return_value) gaat dus wel werken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok bedankt, hier kan ik zeker wat mee. En hoe doe ik een multidimensionale array?? Dat krijg ik nog niet aan de gang. En zijn er ergens goede manuals te krijgen behalve de zend api? Ik kan ze niet vinden.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

PHP kent geen echte multidimensionale array's; bij zo'n array is een array element simpelweg ook weer gewoon een array (dus dat lijkt me een kwestie van array_init aanroepen op een van de array elementen, maar ik heb geen ervaring met arrays binnen extensions)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op zich is het inderdaad het toevoegen van een array binnen een array maar dat moet in een keer via een zend_hashfunctie en dat gaat een beetje fout bij mij.

code:
1
zend_hash_next_index_insert(HASH_OF(return_value), store_array, sizeof(store_array), NULL);


geeft bij mij een array met 2 elementen met getallen erin:
code:
1
Array ( [0] => 1.4853970540709E-313 [1] => 1.4853970540709E-313 )


Ik denk dat ik de pointer naar store_array ofzo in de andere array zet..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik denk dat ik de pointer naar store_array ofzo in de andere array zet..
Dat was de oplossing ;)

code:
1
zend_hash_next_index_insert(HASH_OF(return_value), &store_array, sizeof(store_array), NULL);


werkt!
Pagina: 1