Re: associative arrays
| From: | Markus Fischer | Date: | Mon, 13 Aug 2001 09:24:31 +0000 |
| Subject: | Re: associative arrays | ||
| References: | 1 2 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-63061@lists.php.net to get a copy of this message | ||
go Rasmus go! :-)
Some more examples and we seriously can extend zend.com/apidoc .
Such examples are of great value to anyone who is new to writing php
extension.
- Markus
On Mon, Aug 13, 2001 at 02:14:01AM -0700, Rasmus Lerdorf wrote :
> Ah, ok. It's not much harder:
>
> pval *tmp_arr;
>
> array_init(return_value);
> MAKE_STD_ZVAL(tmp_arr);
> array_init(tmp_arr);
> add_assoc_string(tmp_arr, "string index", "foo", 1);
> zend_hash_index_update(Z_ARRVAL_P(return_value), 5, &tmp_arr, sizeof(tmp_arr), NULL);
>
> This will create $whatever[5]['string index'] = 'foo'
>
> Or if you want a string index at the top level:
>
> zend_hash_update(Z_ARRVAL_P(return_value), "bar", strlen("bar")+1,
> &tmp_arr, sizeof(tmp_arr), NULL);
>
> This will create $whatever['bar']['string index'] = 'foo';
>
> -Rasmus
>
> On Mon, 13 Aug 2001, Thomas Wentzel wrote:
>
> > Uhhh sorry!
> >
> > What I should have said is that... The associative array I wish to
> > return is to be an array element of .... an associative array ;)
> > Meaning... I need the functionality of add_assoc_array but since
> > this function doesn't exist - I have to manipulate with the
> > zend_hash_xxx in order to get what I want - but I fail to connect
> > my constructed array with a name...
> >
> > Rasmus Lerdorf wrote:
> > >
> > > > I was wondering if someone would be so nice as to post a code
> > > > snippet that returns an associative array... I'm writing an
> > > > extension and am only able to return an ordinary array...
> > > > Alternatively I would be very interested if someone could
> > > > point me to some documentation on the zend_hash_xxx functions
> > >
> > > array_init(return_value);
> > > add_assoc_string(return_value, "string index", your_char_var, 1);
> > > add_assoc_double(return_value, "another one", your_long_var);
> > >
> > > That's all. Last arg on add_assoc_string() should be 1 if you need to
> > > make a copy of the string. If the char * you are passing was allocated by
> > > you using emalloc() then don't make a copy.
> > >
> > > You don't need any zend_hash_xxx functions to just return an associative
> > > array.
> > >
> > > -Rasmus
> >
> >
> >
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
> For additional commands, e-mail: php-dev-help@lists.php.net
> To contact the list administrators, e-mail: php-list-admin@lists.php.net
--
Markus Fischer, http://guru.josefine.at/~mfischer/
EMail: mfischer@guru.josefine.at
PGP Public Key: http://guru.josefine.at/~mfischer/C2272BD0.asc
PGP Fingerprint: D3B0 DD4F E12B F911 3CE1 C2B5 D674 B445 C227 2BD0
-All your scripts are belong to Zend-