intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
- if (intern->u.regex.flags) {
+ if (intern->u.regex.flags & REGIT_USE_KEY) {
if (intern->current.key_type == HASH_KEY_IS_LONG) {
subject_len = snprintf(tmp, sizeof(tmp), "%ld", intern->current.int_key);
subject = &tmp[0];
REGISTER_SPL_SUB_CLASS_EX(InfiniteIterator, IteratorIterator, spl_dual_it_new, spl_funcs_InfiniteIterator);
#if HAVE_PCRE || HAVE_BUNDLED_PCRE
REGISTER_SPL_SUB_CLASS_EX(RegExIterator, FilterIterator, spl_dual_it_new, spl_funcs_RegExIterator);
+ REGISTER_SPL_CLASS_CONST_LONG(RegExIterator, "USE_KEY", REGIT_USE_KEY);
REGISTER_SPL_SUB_CLASS_EX(RecursiveRegExIterator, RegExIterator, spl_dual_it_new, spl_funcs_RecursiveRegExIterator);
REGISTER_SPL_IMPLEMENTS(RecursiveRegExIterator, RecursiveIterator);
#else
CIT_HAS_CHILDREN = 0x00020000
};
+enum {
+ /* public */
+ REGIT_USE_KEY = 0x00000001,
+};
+
typedef struct _spl_dual_it_object {
zend_object std;
struct {
$ar = array(0, "123", 123, 22 => "abc", "a2b", 22, "a2d" => 7, 42);
-foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
+foreach(new RegExIterator(new ArrayIterator($ar), "/2/") as $k => $v)
{
echo "$k=>$v\n";
}
===KEY===
<?php
-foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
+foreach(new RegExIterator(new ArrayIterator($ar), "/2/", RegExIterator::USE_KEY) as $k => $v)
{
echo "$k=>$v\n";
}
24=>22
25=>42
===KEY===
-1=>123
2=>123
+22=>abc
23=>a2b
24=>22
+a2d=>7
25=>42
===DONE===