Приводит ли это использование array_filter () к неопределенному поведению?

Так что руководство для 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);

Исходя из формулировки предупреждения в руководстве, я не совсем уверен, что такое использование представляет собой неопределенное поведение.

Итак, мой вопрос: Приводит ли рекурсивное использование array_filter (), как показано выше, к неопределенному поведению или нет?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]