遍历

7.7.5.5 遍历

数组遍历类似foreach的用法,在扩展中可以通过如下的方式遍历:

zval *val;
ZEND_HASH_FOREACH_VAL(ht, val) {
    ...
} ZEND_HASH_FOREACH_END();

遍历过程中会把数组元素赋值给val,除了上面这个宏还有很多其他用于遍历的宏,这里列几个比较常用的:

//遍历获取所有的数值索引
#define ZEND_HASH_FOREACH_NUM_KEY(ht, _h) \
    ZEND_HASH_FOREACH(ht, 0); \
    _h = _p->h;

//遍历获取所有的key
#define ZEND_HASH_FOREACH_STR_KEY(ht, _key) \
    ZEND_HASH_FOREACH(ht, 0); \
    _key = _p->key;

//上面两个的聚合
#define ZEND_HASH_FOREACH_KEY(ht, _h, _key) \
    ZEND_HASH_FOREACH(ht, 0); \
    _h = _p->h; \
    _key = _p->key;

//遍历获取数值索引key及value
#define ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val) \
    ZEND_HASH_FOREACH(ht, 0); \
    _h = _p->h; \
    _val = _z;

//遍历获取key及value
#define ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val) \
    ZEND_HASH_FOREACH(ht, 0); \
    _key = _p->key; \
    _val = _z;

#define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val) \
    ZEND_HASH_FOREACH(ht, 0); \
    _h = _p->h; \
    _key = _p->key; \
    _val = _z;
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3