Re: Zend Hash Question
| From: | Stig Venaas | Date: | Wed, 05 Dec 2001 07:51:54 +0000 |
| Subject: | Re: Zend Hash Question | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-72549@lists.php.net to get a copy of this message | ||
On Wed, Dec 05, 2001 at 01:35:26AM -0500, l0t3k wrote:
> something that has confused me for a second is the use of HashTables to
> store a user defined type. the constructor is fine, its just insertion and
> querying that's mildly confusing. for instance, it seems as if
> zend_hash_add takes sizeof(struct) as an argument as opposed to
> sizeof(struct *) when i assume that generally we only store pointers in the
> hash.
The data is actually copied. Of course it's up to you what data to store.
So you can store the struct or pointer to the struct, up to you.
> suppose i have a struct of type widget_t which gets allocated on the heap.
> what's the general practice of inserting and retrieving widget from the hash
> table ?
This is probably documented at www.zend.com. You have functions for
traversing it sequentially zend_hash_internal_pointer_reset(),
zend_hash_get_current_data(), zend_hash_move_forward(). And you can
also use zend_hash_find() and zend_hash_index_find() to use the
key/index to access something. There's much more to say about this,
it might be helpfull to look at the code for the array functions
in ext/standard/array.c. It should be relatively easy to read the
source when you know from the manual what they do. You could also
look in Zend/zend_hash.h (and the .c file).
Stig