PHP7 扩展中如何遍历数组

更新 @20170908

遍历可以直接使用 ZEND_HASH_FOREACH_* 宏

更多 ZEND_HASH_FOREACH_* 宏

ZEND_HASH_FOREACH
ZEND_HASH_FOREACH_BUCKET(_ht, _bucket)  // _bucket 指向 bucket

// 下面三个方法只遍历值
ZEND_HASH_FOREACH_VAL(ht, _val)  // _val 指向 bucket.val
ZEND_HASH_FOREACH_VAL_IND  // _val 为 INDIRECT 时使用
ZEND_HASH_FOREACH_PTR  // _val 为 PTR 时使用

// 下面三个方法只遍历索引
ZEND_HASH_FOREACH_NUM_KEY(ht, _h)  // _h 为自然索引
ZEND_HASH_FOREACH_STR_KEY(ht, _key)  // _key 为键索引, 注意要判断是否指向 NULL
ZEND_HASH_FOREACH_KEY(ht, _h, _key)  // 相当于上面两种值

ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val)
ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val)
ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val)
ZEND_HASH_FOREACH_STR_KEY_VAL_IND
ZEND_HASH_FOREACH_KEY_VAL_IND
ZEND_HASH_FOREACH_NUM_KEY_PTR
ZEND_HASH_FOREACH_STR_KEY_PTR
ZEND_HASH_FOREACH_KEY_PTR

ZEND_HASH_REVERSE_FOREACH  // 倒过来遍历也有一套类似的宏
您可能还喜欢

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload CAPTCHA.