c'est mon premier post et mon (presque) premier jour en PHP alors merci
d'être indulgent(e).
J'ai donc écrit un module d'extension PHP qui fonctionne à peu près.
Par contre, l'une des fonctions de ce module doit retourner un array de
chaînes de caractères.
Actuellement, ma fonction C se termine ainsi :
array_init(return_value);
next = users;
while ( *next ) {
int i=0;
zval *Next;
MAKE_STD_ZVAL(Next);
ZVAL_STRING(Next, *next, 1);
zend_hash_index_update(HASH_OF(return_value), i, (void *)&Next,
sizeof(zval *), NULL);
free(*next);
next++; i++;
}
}
Pourtant, lorsque j'affiche le contenu de la liste avec :
$ret = get_listOfUser($_POST["node"]);
echo "Liste des utilisateurs sous ".$_POST["node"]." : <br/>";
foreach ( $ret as $user ) {
echo $user."<br/>";
}
echo "<hr/>";
je n'obtiens que le dernier de ma liste. Je suppose que j'utilise mal
zend_hash_index_update() mais même google n'y connais pas grand chose:-(
Qui peut m'aider ?
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, si
possible avec de jolis exemples simples à comprendre ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques Lebastard
Bonjour,
c'est mon premier post et mon (presque) premier jour en PHP alors merci d'être indulgent(e).
J'ai donc écrit un module d'extension PHP qui fonctionne à peu près. Par contre, l'une des fonctions de ce module doit retourner un array de chaînes de caractères.
Actuellement, ma fonction C se termine ainsi :
array_init(return_value); next = users; while ( *next ) { int i=0; zval *Next; MAKE_STD_ZVAL(Next); ZVAL_STRING(Next, *next, 1); zend_hash_index_update(HASH_OF(return_value), i, (void *)&Next, sizeof(zval *), NULL); free(*next); next++; i++; } }
C'était trop simple : il suffit d'utiliser
array_init(return_value); next = users; while ( *next ) { add_next_index_string(return_value, *next, 1); free(*next); next++; } }
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, si possible avec de jolis exemples simples à comprendre ?
Cette question reste valable...
Bonjour,
c'est mon premier post et mon (presque) premier jour en PHP alors merci
d'être indulgent(e).
J'ai donc écrit un module d'extension PHP qui fonctionne à peu près.
Par contre, l'une des fonctions de ce module doit retourner un array de
chaînes de caractères.
Actuellement, ma fonction C se termine ainsi :
array_init(return_value);
next = users;
while ( *next ) {
int i=0;
zval *Next;
MAKE_STD_ZVAL(Next);
ZVAL_STRING(Next, *next, 1);
zend_hash_index_update(HASH_OF(return_value), i, (void *)&Next,
sizeof(zval *), NULL);
free(*next);
next++; i++;
}
}
C'était trop simple : il suffit d'utiliser
array_init(return_value);
next = users;
while ( *next ) {
add_next_index_string(return_value, *next, 1);
free(*next);
next++;
}
}
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, si
possible avec de jolis exemples simples à comprendre ?
c'est mon premier post et mon (presque) premier jour en PHP alors merci d'être indulgent(e).
J'ai donc écrit un module d'extension PHP qui fonctionne à peu près. Par contre, l'une des fonctions de ce module doit retourner un array de chaînes de caractères.
Actuellement, ma fonction C se termine ainsi :
array_init(return_value); next = users; while ( *next ) { int i=0; zval *Next; MAKE_STD_ZVAL(Next); ZVAL_STRING(Next, *next, 1); zend_hash_index_update(HASH_OF(return_value), i, (void *)&Next, sizeof(zval *), NULL); free(*next); next++; i++; } }
C'était trop simple : il suffit d'utiliser
array_init(return_value); next = users; while ( *next ) { add_next_index_string(return_value, *next, 1); free(*next); next++; } }
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, si possible avec de jolis exemples simples à comprendre ?
Cette question reste valable...
John GALLET
Bonjour,
c'est mon premier post et mon (presque) premier jour en PHP "Bienvenue chez les fous" (tm)
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46 qui pointe vers http://fr2.php.net/manual/en/zend.php
Pour créer un tableau on pourra efficacement consulter http://fr2.php.net/manual/en/zend.variables.php
si possible avec de jolis exemples simples à comprendre ? N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql : vi ext/mysql/php_mysql.c
Par rapport au code donné en réponse : attention à bien employer free() et efree() sur les bonnes variables (je ne sais pas d'où provient le contenu pointé par next)
a++; JG
Bonjour,
c'est mon premier post et mon (presque) premier jour en PHP
"Bienvenue chez les fous" (tm)
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend,
Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46
qui pointe vers http://fr2.php.net/manual/en/zend.php
Pour créer un tableau on pourra efficacement consulter
http://fr2.php.net/manual/en/zend.variables.php
si possible avec de jolis exemples simples à comprendre ?
N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql :
vi ext/mysql/php_mysql.c
Par rapport au code donné en réponse : attention à bien employer free() et
efree() sur les bonnes variables (je ne sais pas d'où provient le
contenu pointé par next)
c'est mon premier post et mon (presque) premier jour en PHP "Bienvenue chez les fous" (tm)
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend, Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46 qui pointe vers http://fr2.php.net/manual/en/zend.php
Pour créer un tableau on pourra efficacement consulter http://fr2.php.net/manual/en/zend.variables.php
si possible avec de jolis exemples simples à comprendre ? N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql : vi ext/mysql/php_mysql.c
Par rapport au code donné en réponse : attention à bien employer free() et efree() sur les bonnes variables (je ne sais pas d'où provient le contenu pointé par next)
a++; JG
Jacques Lebastard
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend,
Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46 qui pointe vers http://fr2.php.net/manual/en/zend.php
Il semble en effet plus complet que www.manuelphp.com ! Merci pour le tuyau.
Pour créer un tableau on pourra efficacement consulter http://fr2.php.net/manual/en/zend.variables.php
J'ai presque trouvé ce que je cherchais ces dernières heures : construire un array d'arrays (voir mon post *très* récent dans news://comp.lang.php ;-) Je suis à 2 doigts de la solution. Par contre, il faudra que je prenne le temps pour lire le manuel et comprendre un peu mieux la gestion de la mémoire entre Apache/PHP et les extensions...
si possible avec de jolis exemples simples à comprendre ?
Je nage comme un fer à repasser °°°°°8-O
N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql : vi ext/mysql/php_mysql.c
J'ai bien pensé à ce genre de solution (avec l'extension PHP pour Clips que je venais d'intégrer à EasyPHP mais celle-ci utilise beaucoup trop de macros perso : pas assez zen(d) ;-)
Par rapport au code donné en réponse : attention à bien employer free() et efree() sur les bonnes variables (je ne sais pas d'où provient le contenu pointé par next)
Pas de problème de ce côté-là : les données ont bien été allouées par malloc() *dans* l'extension.
Merci pour ton aide, -- Jacques.
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend,
Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46
qui pointe vers http://fr2.php.net/manual/en/zend.php
Il semble en effet plus complet que www.manuelphp.com ! Merci pour le tuyau.
Pour créer un tableau on pourra efficacement consulter
http://fr2.php.net/manual/en/zend.variables.php
J'ai presque trouvé ce que je cherchais ces dernières heures :
construire un array d'arrays (voir mon post *très* récent dans
news://comp.lang.php ;-) Je suis à 2 doigts de la solution. Par contre,
il faudra que je prenne le temps pour lire le manuel et comprendre un
peu mieux la gestion de la mémoire entre Apache/PHP et les extensions...
si possible avec de jolis exemples simples à comprendre ?
Je nage comme un fer à repasser °°°°°8-O
N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql :
vi ext/mysql/php_mysql.c
J'ai bien pensé à ce genre de solution (avec l'extension PHP pour Clips
que je venais d'intégrer à EasyPHP mais celle-ci utilise beaucoup trop
de macros perso : pas assez zen(d) ;-)
Par rapport au code donné en réponse : attention à bien employer free() et
efree() sur les bonnes variables (je ne sais pas d'où provient le
contenu pointé par next)
Pas de problème de ce côté-là : les données ont bien été allouées par
malloc() *dans* l'extension.
Où puis-je trouver de la doc (à jour et précise) sur l'API Zend,
Comme toujours avec PHP : dans le manuel avant tout.
http://fr2.php.net/manual/en/ chapitre VII et en particulier le point 46 qui pointe vers http://fr2.php.net/manual/en/zend.php
Il semble en effet plus complet que www.manuelphp.com ! Merci pour le tuyau.
Pour créer un tableau on pourra efficacement consulter http://fr2.php.net/manual/en/zend.variables.php
J'ai presque trouvé ce que je cherchais ces dernières heures : construire un array d'arrays (voir mon post *très* récent dans news://comp.lang.php ;-) Je suis à 2 doigts de la solution. Par contre, il faudra que je prenne le temps pour lire le manuel et comprendre un peu mieux la gestion de la mémoire entre Apache/PHP et les extensions...
si possible avec de jolis exemples simples à comprendre ?
Je nage comme un fer à repasser °°°°°8-O
N'oublions pas que nous disposons de **tout** le code source de php...
Le plus simple est de disséquer l'extension mysql : vi ext/mysql/php_mysql.c
J'ai bien pensé à ce genre de solution (avec l'extension PHP pour Clips que je venais d'intégrer à EasyPHP mais celle-ci utilise beaucoup trop de macros perso : pas assez zen(d) ;-)
Par rapport au code donné en réponse : attention à bien employer free() et efree() sur les bonnes variables (je ne sais pas d'où provient le contenu pointé par next)
Pas de problème de ce côté-là : les données ont bien été allouées par malloc() *dans* l'extension.