php逻辑运算符

时间:2011-07-27 17:56:20

标签: php operators

下面的代码(在foreach循环中)有时会返回某些内容,并且在传递相同的变量时有时会返回任何内容:

$term_id = 76;
$term_parent = 75;

if($term_id != 114 && $term_id != 115 && $term_parent != 83){ 
  $term_link_content = 'something'; 
} else { 
  $term_link_content = 'nothing'; 
}

- 根据目前为止的回复,完整代码如下。我基本上是在第一个学期之后,不等于列出的任何ID。我通过为具有相同术语的不同帖子输出$ term_id和$ term_parent来检查循环,因此我可以看到if语句传递相同的值,但有时$ term_link_content变量有内容,有时候它是空的。

$posts = get_posts('post_type=products&product_categories=Best Sellers');
foreach($posts as $post){

$post_ID = $post->ID;

$terms = get_the_terms( $post_ID, "product_categories" );

$i = 0;
foreach($terms as $term){

    $term_id = $term->term_id;
    $term_parent = $term->parent;
    $term_name = $term->name;
    $term_slug = $term->slug;

   if($term_id != 114 && $term_id != 115 && $term_parent != 83){ 

    // only get the first
    if(++$i > 1) break;
    $term_text = $term_name; 
    $term_link = $url.'/shop/'.$term_slug; 
    $term_link_content = '<span class="term_text"><a class="'.$card_colour.'" href="'.$term_link.'">'.$term_text.'</a></span>'; 

   } else { $term_link_content = ''; }
}
}

1 个答案:

答案 0 :(得分:0)

我假设您在进入$term_id循环之前定义$term_parent和/或foreach,并在循环体中执行其余代码。

然而,当你做这样的事情时:

foreach (getTerms() as $term) {
    // perform an if-statement
}

这可能会改变您定义的变量,例如:

function getTerms() {
    global $term_id, $term_parent;
    // probably some database-connection that changes $term_id and $term_parent.
}

如果我错了,请纠正我,但我很确定Wordpress的功能是这样运作的,所以当你使用Wordpress,开发插件时或者当你使用WordP时,你不应该信任通用的全局变量使用面向功能(而不是面向对象)的框架。