Yes, that's basically what I sent him as an example. I think the ext/standard/array.c is a good place to look for this information too.
Fab. ----- Original Message ----- From: "Rasmus Lerdorf" <[EMAIL PROTECTED]> To: "Eric Veldhuyzen" <[EMAIL PROTECTED]> Cc: "fabwash" <[EMAIL PROTECTED]>; "Markus Fischer" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Thursday, June 06, 2002 10:26 AM Subject: Re: [PHP-DEV] How do I access a hash from an extention/module? > > Well, I think you might be able to help me then. I want to retrieve an > > array and walk throught it. Should be pretty simple, right? > > Think of which PHP functions do this and go have a look. Basically think > of how you do it in PHP at the low level. You would do something like > this: > > reset($arr); > while($val=current($arr)) { > $key = key($arr); > ... do something with $key and $val ... > next($arr); > } > > Now, obviously this has a slight problem of $val evaluating to false, but > it is more to explain the steps. > > Now here is the C equivalent: > > zval **arr,**val; > char *key; > ulong num_key; > HashTable *target_hash; > HashPosition pos; > > target_hash = HASH_OF($arr); > zend_hash_internal_pointer_reset_ex(target_hash, &pos); > while(zend_hash_get_current_data_ex(target_hash, (void **)&val, &pos) == SUCCESS) { > type = zend_hash_get_current_key_ex(target_hash, &string_key, &str_key_len, &num_key, 0, &pos); > > // type will be HASH_KEY_IS_STRING for a string key, and string_key/str_key_len are set > // or type will be HASH_KEY_IS_LONG and num_key will be set > // Now you have a normal zval** with the value and the key in either of string_key or num_key > > zend_hash_move_forward_ex(target_hash, &pos); > } > > That's all. > > -Rasmus > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php