# wp_find_hierarchy_loop_tortoise_hare()

URL: https://chugunov.pro/api-wordpress/functions/wp_find_hierarchy_loop_tortoise_hare/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 3.1.0.

## Сигнатура

```php
wp_find_hierarchy_loop_tortoise_hare( callable $callback, int $start, array $override = array(), array $callback_args = array(), bool $_return_loop = false ): mixed
```

## Описание

На каждом шаге алгоритма заяц делает два шага, а черепаха — один.
Если заяц когда-либо обгоняет черепаху, значит есть цикл.

## Параметры

- `$callback` `callable` — обязательный. Функция, которая принимает ( ID, callback_arg, … ) и возвращает parent_ID.
- `$start` `int` — обязательный. Идентификатор, с которого начинается проверка на циклы.
- `$override` `array` — необязательный, по умолчанию `array()`. Массив ( ID => parent_ID, … ), используемый вместо $callback.
- `$callback_args` `array` — необязательный, по умолчанию `array()`. Дополнительные аргументы, передаваемые в $callback.
- `$_return_loop` `bool` — необязательный, по умолчанию `false`. Возвращать участников цикла или только определять его наличие? Устанавливайте true только если вы уже знаете, что заданный $start входит в цикл (иначе возвращаемый массив может включать ответвления).

## Возвращаемое значение

`mixed`

## Исходный код

Файл: `wp-includes/functions.php:7152`

```php
function wp_find_hierarchy_loop_tortoise_hare( $callback, $start, $override = array(), $callback_args = array(), $_return_loop = false ) {
	$tortoise        = $start;
	$hare            = $start;
	$evanescent_hare = $start;
	$return          = array();

	// Set evanescent_hare to one past hare. Increment hare two steps.
	while (
		$tortoise
	&&
		( $evanescent_hare = $override[ $hare ] ?? call_user_func_array( $callback, array_merge( array( $hare ), $callback_args ) ) )
	&&
		( $hare = $override[ $evanescent_hare ] ?? call_user_func_array( $callback, array_merge( array( $evanescent_hare ), $callback_args ) ) )
	) {
		if ( $_return_loop ) {
			$return[ $tortoise ]        = true;
			$return[ $evanescent_hare ] = true;
			$return[ $hare ]            = true;
		}

		// Tortoise got lapped - must be a loop.
		if ( $tortoise === $evanescent_hare || $tortoise === $hare ) {
			return $_return_loop ? $return : $tortoise;
		}

		// Increment tortoise by one step.
		$tortoise = $override[ $tortoise ] ?? call_user_func_array( $callback, array_merge( array( $tortoise ), $callback_args ) );
	}

	return false;
}
```

## История изменений

- 3.1.0 — Introduced.

## Связанные

Используется в: [`wp_find_hierarchy_loop`](https://chugunov.pro/api-wordpress/functions/wp_find_hierarchy_loop/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_find_hierarchy_loop_tortoise_hare/
