我正在将数据从表单存储到用户数据中。
我成功提取了用户数据:
$u = new User();
$ui = UserInfo::getByID($u->getUserID());
$testtype = $ui->getAttribute('TestType','display');
这返回了我期望的结果。但是当我尝试使用...进行评估时
} else if ($testtype == "English Adult Male") {
...它不会触发。
我回显正在提取的输出,并注意到html在变量的回显之后放置了<br>
。我试图将输出通过trim
传递,但结果相同。
我在做什么错了?
答案 0 :(得分:1)
通常最好将===
代替==
进行比较。进一步了解该here
以这种方式更改代码,使其中包含带字符串的$case
并同时执行var_dump
和$case
的{{1}}
$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!";
}
注意
字符串( 19 )不是字符串( 23 )
您的var转储中有23个字符,超过了字符串string(19) "English Adult Male "
string(19) "English Adult Male "
ELSE IF!
中的字符数,这使我得出以下结论:您具有多字节字符编码,但可能正在测试的字符串不是多字节字符但单字节及其19字节的字符串与23字节的字符串。
您可以将"English Adult Male "
转换为mb_convert_encoding()
mb_detect_encoding也可能很方便来检测$testtype
的编码;
答案 1 :(得分:0)
问题出在线
$testtype = $ui->getAttribute('TestType','display');
通过将其更改为:
$testtype = $ui->getAttribute('TestType');
然后将条件设置为==
,因为===
不起作用,结果是所希望的。
希望这对某人有帮助!