我已经尝试过一切!我试图找出用户"销售管理员"在字符串中是允许的。我试过爆炸了弦乐和弦乐。把它放在一个数组中,我已经尝试了strpos
(在下面的代码中),preg匹配甚至if (strpos($userAllowedString, $userRole) > -1)
。结果总是空的。结果应该是假的,但它没有回馈任何东西。
$userAllowedString = "Sales Manager,Sales Director,Project Manager,Developer";
$userRole = "Sales Administrator";
if(strpos($userAllowedString,$userRole) !== false) {
$userAllowed= true;
} else {
$userAllowed = false;
}
有什么建议吗?
答案 0 :(得分:1)
尝试使用'true'或'false'之类的值,而不是true
或false
。因为没有引号本身的真或假代表空字符串。
$userAllowedString = "Sales Manager,Sales Director,Project Manager,Developer";
$userRole = "Sales Administrator";
$userAllowedString = explode(',', $userAllowedString);
if(in_array($userRole, $userAllowedString)) {
$userAllowed= 'true';
} else {
$userAllowed = 'false';
}
echo $userAllowed; //false
答案 1 :(得分:1)
您可以使用in_array()
:
$userAllowedString = "Sales Manager,Sales Director,Project Manager,Developer";
$userRole = "Sales Administrator";
$userAllowed = in_array($userRole, explode(',', $userAllowedString));
答案 2 :(得分:0)
我想为此任务推荐php builtin function in_array()。正如评论中已经说过的那样,我希望将其添加为详细信息的答案
$userAllowedString = "Sales Manager,Sales Director,Project Manager,Developer";
$userRole = "Sales Administrator";
$userAllowedString = explode(',', $userAllowedString);
if(in_array($userRole, $userAllowedString)) {
// True
$userAllowed= 'true';
} else {
// False
$userAllowed = 'false';
}
echo $userAllowed; //false
答案 3 :(得分:0)
不要使用in_array()
过度杀伤。你的脚本正常工作。
当你回显变量时,你只是看不到结果,因为布尔false
将输出一个空字符串。布尔true
将回显1
。使用echo
之外的其他内容,例如var_export()
来显示实际的布尔值。
代码:(Demo)
$userAllowedString = "Sales Manager,Sales Director,Project Manager,Developer";
$userRole = "Sales Administrator";
if(strpos($userAllowedString,$userRole) !== false) {
$userAllowed= true;
} else {
$userAllowed = false;
}
echo "\n----\n";
var_export($userAllowed);
echo "\n----\n";
echo false;
echo "\n----\n";
var_export(true);
echo "\n----\n";
echo true;
输出:
----
false
----
----
true
----
1