Php 使用数组_filter()是否会导致未定义的行为?

Php 使用数组_filter()是否会导致未定义的行为?,php,recursion,undefined-behavior,Php,Recursion,Undefined Behavior,这本手册就是这么说的 如果从回调函数更改数组(例如添加、删除或取消设置元素),则此函数的行为未定义 我在我的代码库中偶然发现了以下代码片段(为再现性添加了示例变量定义): 从手册中警告的措辞来看,我不能完全确定这种用法是否构成未定义的行为 所以我的问题是:像上面所示的那样递归使用array_filter()会导致未定义的行为吗? $enabledGroups = array(1, 3, 5); $subgroups = array( array('nid' => 1),

这本手册就是这么说的

如果从回调函数更改数组(例如添加、删除或取消设置元素),则此函数的行为未定义

我在我的代码库中偶然发现了以下代码片段(为再现性添加了示例变量定义):

从手册中警告的措辞来看,我不能完全确定这种用法是否构成未定义的行为

所以我的问题是:像上面所示的那样递归使用array_filter()会导致未定义的行为吗?

$enabledGroups = array(1, 3, 5);

$subgroups = array(
    array('nid' => 1),
    array('nid' => 2),
    array(
        'nid' => 3,
        'children' => array(
            array ('nid' => 4),
            array ('nid' => 5)
        )
    )
);

$filterFunc = function (&$v) use ($enabledGroups, &$filterFunc) {
    if($v['children']) {
        $v['children'] = array_filter($v['children'], $filterFunc);
    }

    return in_array($v['nid'], $enabledGroups);
};

$subgroups = array_filter($subgroups, $filterFunc);