
如何在XAMPP中更改数据库MySQL密码
wp_find_hierarchy_loop_tortoise_hare ( $callback, $start, $override = array(), $callback_args = array(), $_return_loop = false )
wp_find_hierarchy_loop_tortoise_hare: 这是wp_find_hierarchy_loop函数的一个变体,使用龟兔赛跑算法来检测分层数据结构中的循环。这个算法包括以不同的速度在数据结构中移动两个指针,并检查是否有重叠。对于大型数据结构,这个函数比wp_find_hierarchy_loop更有效。
使用"龟兔赛跑"算法来检测循环。
对于该算法的每一步,兔子走两步,乌龟走一步。如果兔子超过了乌龟,就一定有一个循环。
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 = isset( $override[ $hare ] ) ? $override[ $hare ] : call_user_func_array( $callback, array_merge( array( $hare ), $callback_args ) ) ) && ( $hare = isset( $override[ $evanescent_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 = isset( $override[ $tortoise ] ) ? $override[ $tortoise ] : call_user_func_array( $callback, array_merge( array( $tortoise ), $callback_args ) ); } return false; }