Re: What's wrong with these hashtable iteration code?

From: Date: Mon, 21 Jul 2014 03:20:21 +0000
Subject: Re: What's wrong with these hashtable iteration code?
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-75734@lists.php.net to get a copy of this message
On Mon, Jul 21, 2014 at 11:12 AM, Aaron Lewis <the.warl0ck.1989@gmail.com> wrote: > Hi, > > I'm trying to iterate through a hash table, > > But the zend_hash_get_current_key() doesn't seem to move forward: > I'm getting duplicate output at the 'fprintf' part. > > for(zend_hash_internal_pointer_reset_ex(ht, &pos); > zend_hash_has_more_elements_ex(ht, &pos) == SUCCESS; > zend_hash_move_forward_ex(ht, &pos)) > { > if (zend_hash_get_current_key (ht, &string_key, &num_key, 0) > != HASH_KEY_IS_STRING) > continue; > > fprintf (stderr, "string key: %s\n", string_key); > } > The _ex() hash iteration functions allow for iterating a hash without modifying its internal pointer, but zend_hash_get_current_key() uses only the internal pointer. The function you need to use is: zend_hash_get_current_key_ex() and pass &pos to it. > > Any ideas? > > > -- > Best Regards, > Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/ > Finger Print: 9F67 391B B770 8FF6 99DC D92D 87F6 2602 1371 4D33 > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- -- Tjerk

« previous php.internals (#75734) next »