Возвращение данных от пользователя в Concrete5 не оценивается как истинное при тестировании - PullRequest
0 голосов
/ 03 июня 2019

Я храню данные из формы в пользовательских данных в Concrete5.

Я успешно извлекаю данные пользователя:

$u = new User();
$ui = UserInfo::getByID($u->getUserID());
$testtype = $ui->getAttribute('TestType','display');

Это возвращение того, что я ожидаю. Но когда я пытаюсь оценить это, используя ...

} else if ($testtype == "English Adult Male") {

... не срабатывает.

Я повторяю вывод, который я извлекаю, и замечаю, что html ставит <br> после эха переменной. Я пытался передать вывод через trim, но то же самое выходит.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 03 июня 2019

используйте === вместо == для общего сравнения в качестве хорошей практики. Подробнее читайте здесь здесь

Измените свой код так, чтобы у вас было $case со строкой в ​​нем, и наберите var_dump как $case, так и $testtype

<?php

$testtype = "English Adult Male ";
$case = "English Adult Male ";
var_dump($testtype);
var_dump($case);

if ($testtype === "whatever") {
    echo "IF!";

} else if ($testtype === $case) {
    echo "ELSE IF!";
}

код выше генерирует вывод:

string(19) "English Adult Male "
string(19) "English Adult Male "
ELSE IF!

Примечание

строка ( 19 ) не строка ( 23 )

у вас есть 23 в вашем дампе var, что больше числа символов в строке "English Adult Male ", что приводит меня к выводу, что у вас есть многобайтовая кодировка символов, но, вероятно, вы тестируете свою строку, которая не многобайтовая, а однобайтовая и его строка 19 байтов против строки 23 байтов.

вы можете конвертировать $testtype с помощью mb_convert_encoding ()

и поддерживаемые кодировки

также mb_detect_encoding может быть удобно для обнаружения кодировки $testtype;

0 голосов
/ 04 июня 2019

Проблема была со строкой

$testtype = $ui->getAttribute('TestType','display');

Изменив это на:

$testtype = $ui->getAttribute('TestType');

Затем установив условное значение на ==, потому что === не будет работать,результат был желаемым.

Надеюсь, это кому-нибудь поможет!

...