0

我有一个foreach如下所示的声明:

foreach ($term['terms'] as $term_single) {
    $term_object = get_term_by('name', $term_single, $tax_name);

    switch ($term['tax_name']) {
        case has_action( "basey_taxonomy_search_teaser_{$tax_name}" ) :
            do_action( "basey_taxonomy_search_teaser_{$tax_name}",$term_object, $term_single );
        break;

        default:
            echo basey_taxonomy_search_teaser_default($term_object,$term_single);
        break;
    }
}

所以,在这个范围内,我有$term_object$term_single变量要传递给basey_taxonomy_search_teasr_default()函数。奇怪的是,如果我在另一个位置执行以下操作:

function basey_taxonomy_search_teaser_default($term_object,$term_single) {

    ob_start();

    do_action('basey_taxonomy_teaser_before');
    echo '<article id="tax-' . $term_object->term_id . '" class="' . $term_object->taxonomy . '">';
    echo '<a href="';
    echo get_term_link($term_object);
    echo '">';
    echo $term_single;
    echo '</a>';
    echo '</article>';
    do_action('basey_taxonomy_teaser_after');

    $display = apply_filters('basey_taxonomy_teaser_default_view', ob_get_clean());
    return $display;
}

它在我的本地主机上工作得很好,但是在服务器上在线时,它会返回错误,$term_object并且$term_single未定义。如果我希望函数定义使用初始调用中的值,有没有更好的方法呢?再次有点困惑为什么它会在本地主机(MAMP)上工作,但在服务器上,它会出错。除了它是一个 php.ini 问题(我认为这是更基本的编程实践)之外,看看我做错了什么以及我的假设是否与通过函数传递值有关。谢谢!

更新

var_dump($term_object)紧接着$term_object = get_term_by('name', $term_single, $tax_name);

本地主机给了我:

object(stdClass)#181 (10) { ["term_id"]=> string(3) "127" ["name"]=> string(4) "Base" ["slug"]=> string(4) "base" ["term_group"]=> string(1) "0" ["term_order"]=> string(1) "0" ["term_taxonomy_id"]=> string(3) "130" ["taxonomy"]=> string(18) "profile_categories" ["description"]=> string(4) "Base" ["parent"]=> string(1) "0" ["count"]=> string(1) "2" }

实时服务器给了我:

bool(false)

呸,很郁闷。

4

2 回答 2

0

我猜你遇到的数据库不同,$term_single 为空,导致 $term_object 为空,当你调用函数并尝试使用你要死的对象时。

于 2012-10-18T13:47:50.260 回答
0

听起来您正在搜索的术语在实时服务器上不存在。

于 2012-10-18T14:01:02.327 回答