我的递归函数不起作用

时间:2012-07-15 17:13:30

标签: php wordpress recursion

我创建了一个递归函数来查明当前页面是否是页面树中页面的子页面。

我的功能:

function is_ancestor_of( $page_name = null, $post ) {

  if(is_null($page_name))
    return false;

  // does it have a parent?
  if (!isset( $post->post_parent ) OR $post->post_parent <= 0 )
    return false;

  //Get parent page
  $parent = wp_get_single_post($post->post_parent);

  if ( $parent->post_name == $page_name ){
    echo $parent->post_name.' - '.$page_name;
    return true;
  } else {
    is_ancestor_of( $page_name, $parent );
  }
}

这是我正在测试的代码:

$is_parent = is_ancestor_of( 'account', $post );

if(!$is_parent) {
  echo '<br/> No match';
}

这就是结果:

  

帐户 - 帐户
  不匹配

这表明它确实找到了父页面名称'account',但它没有返回任何数据。我也测试过返回一个字符串,但这也不起作用。

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:3)

您的问题似乎是递归调用函数但未从递归调用中返回结果。

你的行

is_ancestor_of( $page_name, $parent );

应该只是

return is_ancestor_of( $page_name, $parent );

答案 1 :(得分:0)

尝试在下一行之前回复$parent->post_name,您可能会更好地了解正在发生的事情。

 if ( $parent->post_name == $page_name ){