我试图根据分配给用户的值来操作文本字符串。
完整的文字字符串是'列表,项目,案例,身份和位置'这只是完全针对ADMIN。
系统上的每个用户都有访问权限。每项权利都决定了他们能做什么,不能做什么。
因此,访问权限a1 = 'Lists'
,b1 = 'Items'
等...
当用户登录页面时,显示他们有权访问的内容。
例如:
Welcome $user
You have access to $foo
对于管理员用户..这看起来像:
Welcome Admin
You have access to Lists, Items, Cases, Identity and Location
所以现在我尝试做以下事情:
if ($user == 'admin') $foo = 'Lists, Items, Cases, Identity and Location'; // full access
但我需要能够更改每个用户的值。
$foo ='';
if (strpos($access,'a1') !== false) $foo .= 'Lists ';
if (strpos($access,'b1') !== false) $foo .= 'Items ';
if (strpos($access,'c1') !== false) $foo .= 'Cases ';
if (strpos($access,'d1') !== false) $foo .= 'Identity ';
if (strpos($access,'e1') !== false) $foo .= 'Location ';
我遇到的问题是标点符号搞砸了。 用户Miz可以访问a1,b1,c1
当她登录时,她得到:
Welcome Miz
You have access to Lists Items Cases
我想说的是:
Welcome Miz
You have access to Lists, Items and Cases
任何人都可以建议实现这个目标的最佳方式
由于
答案 0 :(得分:3)
<?php
$arr = array();
if (strpos($access,'a1') !== false) $arr[] = 'Lists ';
if (strpos($access,'b1') !== false) $arr[] = 'Items ';
if (strpos($access,'c1') !== false) $arr[] = 'Cases ';
if (strpos($access,'d1') !== false) $arr[] = 'Identity ';
if (strpos($access,'e1') !== false) $arr[] = 'Location ';
$last = array_pop($arr);
$foo = count($arr) ? implode(", ", $arr) . " AND " . $last : $last;
?>
答案 1 :(得分:0)
尝试使用数组并加入:
$rights = array();
$foo = '';
if (strpos($access, 'a1') !== false)
$rights[] = 'Lists ';
if (strpos($access, 'b1') !== false)
$rights [] = 'Items ';
if (strpos($access, 'c1') !== false)
$rights [] = 'Cases ';
if (strpos($access, 'd1') !== false && strpos($access, 'e1') !== false) {
$rights[] = "Identity and Location";
} else {
if (strpos($access, 'd1') !== false)
$rights[] = 'Identity ';
if (strpos($access, 'e1') !== false)
$rights[] = 'Location ';
}
echo join(', ', $rights);
编辑:根据其他答案中的OP评论,Identity and Location
已处理。
答案 2 :(得分:0)
这样的事情会起作用。
$foo ='';
if (strpos($access,'a1') !== false) $foo .= 'Lists, ';
if (strpos($access,'b1') !== false) $foo .= 'Items, ';
if (strpos($access,'c1') !== false) $foo .= 'Cases, ';
if (strpos($access,'d1') !== false) $foo .= 'Identity, ';
if (strpos($access,'e1') !== false) $foo .= 'Location, ';
$str = rtrim($foo,', '); //remove last ","
echo preg_replace('/,\s([^,]*$)/', ' and $1', $str); //replace last ", " with " and "