$list_of_groups = array("FACULTY","STAFF");
foreach ($list_of_groups as $i => $group) {
$user_in_group = $adldap->user_ingroup($username,$group);
print "<h2>Group: ".$group." user in group? ".$user_in_group."</h2>"; // if 1, means yes
}
需要根据返回true的内容运行相应的函数。
有些用户是FACULTY和STAFF组的成员,因此我想检查这些用户并为他们显示相应的内容。
因此,如果用户既是教职员工又是教职员工,那么显示这一点,如果他们只是工作人员,则显示同样的教职员工,可能没有意义,但我会写出一些“理论上”的代码,这将有助于你了解我想要做什么
switch(Get group membership of user) {
case "FACULTY":
print "Faculty group member";
break;
case "STAFF":
print "Staff group member";
break;
case "FACULTY and STAFF":
print "Member of both faculty and staff";
break;
}
我不确定它将如何检查它们是否是两个组的成员并通过case语句运行以显示相应的消息。
foreach外观目前通过用户所属的每个组运行,打印出$ list_of_groups中的那些以及右边的数字1,表示它们属于它。我遇到的问题是尝试使用该信息来运行案例陈述,我不确定如何去做。
这是为当前通过foreach循环传递的用户打印的内容:
组:团队中的FACULTY用户? 1 组:团队中的STAFF用户? 1
感谢任何帮助。
编辑:我道歉,我解释得不够好。我需要通过他们所属的所有团体,如果他们属于教职员工,打印“属于教职员工”,如果只有教师打印出“教师”,如果只有工作人员打印出“工作人员”,如果只是学生,打印出“学生”,这是为了根据用户所属的组显示某些信息。所以代码必须检查所有组,我想不需要list_of_groups,因为他们将通过$ result = $ adldap-&gt; user_groups(“$ username);
找到组成员资格。答案 0 :(得分:1)
function getGroupMembership($username) {
$list_of_groups = array("FACULTY","STAFF");
$groups = array();
foreach ($list_of_groups as $i => $group) {
$user_in_group = $adldap->user_ingroup($username,$group);
if ($user_in_group)
$groups[] = $group;
}
return implode(' and ', $groups);
}
这将返回您为交换机请求的字符串。 (假设user_ingroup返回0或false,如果用户不在组中。)
基于编辑的附录:
我假设返回的数组的形式(“Group1”,“Group2”,“etc”)没有顺序。将其交换为散列,使用true / false作为值。
function convertToHash($groups) {
$hash = array();
$foreach($groups as $group) {
$hash[$group] = true;
}
return $hash;
}
现在使用正常的条件来检查。
if (isset($hash['Student']) and count($hash) == 1) {
// just a student
}
else if (isset($hash['Student']) and isset($hash['Staff']) and count($hash) == 2) {
// student and staff: whatever this means
}
else {
// my method broke
}
答案 1 :(得分:0)
如果您可以收集此用户组的多个摘要(例如staff = 1和faculty = 2),并提供一个汇总用户组值集合的数字, 并显示它,
这样的事情:
switch($collect) {
case "0":
print "no group member";
break;
case "1":
print "Staff group member";
break;
case "2":
print "FACULTY group member";
break;
case "3":
print "Member of both faculty and staff";
break;
}
答案 2 :(得分:0)
也可能:
$list_of_groups = array("FACULTY", "STAFF");
$group_membership = array();
// get group memberships and store them in a result array
foreach ($list_of_groups as $i => $group) {
$user_in_group = $adldap->user_ingroup($username, $group);
$group_membership[$group] = $user_in_group ? 1 : 0;
print "<h2>Group: $group - user in group? $user_in_group</h2>";
}
// print different outputs depending on group memberships
if (array_sum($group_membership) == count($group_membership)) {
print "Member of all groups in the list";
}
else {
foreach ($list_of_groups as $i => $group) {
if ($group_membership[$group] == 1) {
print "$group group member";
}
}
}