Ik heb zelf een extensie voor PHP gemaakt, gewoon in ANSI C, om zo PHP te voorzien van enkele extra functies. Werkt prima, variabelen uitwisselen tussen PHP en de extensie is simpel. Ook in de extensie arrays maken en die aan PHP doorgeven is eenvoudig.
Maar voor een extra feature wil ik wat doubles in een array aan de extensie doorgeven, en daar zit het probleem: ik kan nergens API functies en/of macro's vinden om handig alle elementen uit die array op te vragen!
Wel is er Z_ARRVAL(zval), maar er staat niet bij wat dat precies als resultaat oplevert. Het is een macro naar (zval).value.ht. (hashtable dus) Maar kan ik die pointer opvatten als een array van ZVAL containers? En hoe kom ik achter de omvang van die array?
Kort door de bocht zoek ik dit:
Kan iemand dit stukje kloppend maken?
(m.n. GetArraySize en .nextElement, die bestaan dus niet maar geven aan wat ik zoek)
Maar voor een extra feature wil ik wat doubles in een array aan de extensie doorgeven, en daar zit het probleem: ik kan nergens API functies en/of macro's vinden om handig alle elementen uit die array op te vragen!
Wel is er Z_ARRVAL(zval), maar er staat niet bij wat dat precies als resultaat oplevert. Het is een macro naar (zval).value.ht. (hashtable dus) Maar kan ik die pointer opvatten als een array van ZVAL containers? En hoe kom ik achter de omvang van die array?
Kort door de bocht zoek ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| ZVAL *pTemp;
double *dMijnArray;
int iSize,i;
iSize=GetArraySize(zvalArray);
dMijnArray=(double*)malloc(iSize*sizeof(double));
for (int i=0;i<iSize;i++) {
pTemp=zvalArray.nextElement();
convert_to_double_ex(pTemp);
dMijnArray[i]=Z_DVAL_P(pTemp);
} |
Kan iemand dit stukje kloppend maken?