Просмотры глобального счетчика ЕСЛИ условие не работает? - PullRequest
0 голосов
/ 29 декабря 2011

Пожалуйста, кто-нибудь может решить мою проблему. это в 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 голосов
/ 03 июня 2015

Я полагаю, что Views обернул значение вашего поля в некоторый HTML, поэтому ваш реальный вывод может быть <span class="field-content">1</span>, но в браузере вы видите только "1".

Во избежание оборачивания результата в HTMLвам нужно изменить настройки стиля поля «Просмотреть счетчик результатов» на «Настроить поле HTML» и установить «- Нет -» в качестве раскрывающегося значения.

Теперь $field->content вернет значение без HTML и $mycount == 1 в вашем операторе if будет работать нормально.

0 голосов
/ 29 декабря 2011

Я подозреваю, что проблема заключается в размере дампа строки - string (36) - что предполагает $mycount содержимое не одного символа, а 36 (число "1" и 35 символов мусора). Вы должны попробовать это:

<code>$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) . '

';

Вы должны увидеть что-то вроде этого на выходе:

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