查看全局计数器IF条件不起作用?

时间:2011-12-28 21:20:21

标签: php drupal drupal-views

任何人都可以解决我的问题。它在drupal 7视图中,我不知道为什么if条件没有得到满足(if($ mycount == 1))在下​​面的代码中。

foreach ($fields as $id => $field){
    if($field->class == "counter")
    {
        $mycount = $field->content;
        echo $mycount;
        echo "<br>";
    }
    if($field->class == "field-logo")
    {
        var_dump($mycount);  // output 
        echo "<br>";
        if($mycount == 1)   // but here 1 == 1 for the first time. see the output.
        {
            echo "worked";  // its not coming here...
        }
    }
}

输出:

1
string(36) "1"
2
string(36) "2"
3
string(36) "3"
4
string(36) "4"
5
string(36) "5"

感谢。

2 个答案:

答案 0 :(得分:0)

我怀疑问题是转换字符串大小 - 字符串(36) - 这表明$mycount内容不是一个字符而是36(数字“1”和35个垃圾字符) 。你应该试试这个:

$mycount = trim($field->content);

echo '<pre>as string: ' . var_export($mycount, true)
    . ', is_numeric: ' . var_export(is_numeric($mycount), true)
    . ', as integer: ' . var_export((int) $mycount, true) . '</pre><br />';

您应该在输出中看到类似的内容:

as string: '1', is_numeric: true, as integer: 1

答案 1 :(得分:0)

我认为Views会将您的字段值包含在某些HTML中,因此您的实际输出可能是<span class="field-content">1</span>,但在浏览器中,您只能看到&#34; 1&#34;。

为了避免将结果包装在HTML中,您需要更改&#34;查看结果计数器&#34;字段样式设置为&#34;自定义字段HTML&#34;并设置&#34; - 无 - &#34;作为下拉值。

现在$field->content将返回没有任何HTML的值,并且if语句中的$mycount == 1将正常运行。