我正在尝试匹配与用户相关的特定记录集。例如,我试图通过检查用户是否是group_members
字段的一部分来获取用户所属的所有组。我使用PHP explode
函数,但它只返回分隔符后的部分。我想要检索匹配。
这是我的代码:
$select = new Select('groups');
$select->columns(array('group_members'))
->where("group_name != '' AND group_name IS NOT NULL");
$query = parent::$sql->getAdapter()->query(
parent::$sql->buildSqlString($select),
Adapter::QUERY_MODE_EXECUTE
);
if (count($query) > 0) {
$user = array();
foreach ($query as $value) {
// determine what groups the user is in
$user[] = $value['group_members'];
}
return $user;
if (in_array(parent::getUser(), explode(", ", $user))) {
echo "yay";
} else {
throw new GroupsExceptions("No groups were found for " . parent::getUser());
}
} else {
throw new GroupsExceptions("Looks like there are no groups created yet! Maybe you would like to create one?");
}
这是var_dump结果:
array(2) { [0]=> string(20) "jimmysole, timlinden" [1]=> string(9) "timlinden" }
parent::getUser()
是与用户名匹配的方法,数据库中的组成员字段包含" name,name2"。
我如何进行匹配,然后只抓取与会话用户匹配的用户名?有没有办法提取" jimmysole"从第一个数组值只?我无法通过爆炸让它正常工作,但我想我可能做错了。
由于
答案 0 :(得分:0)
foreach ($query as $value) {
// determine what groups the user is in
$user = $value['group_members'];
}
这是循环$ query数组并将每个数组添加到字符串$ user,因为它覆盖每个循环,$ user将是来自$ query的最后一个值
if (in_array(parent::getUser(), explode(", ", $user))) {
$ user是一个1的字符串,没有分隔符
这样:
foreach ($query as $value) {
// determine what groups the user is in
$user[] = $value['group_members'];
}
这会创建$ user array ..
if (in_array(parent::getUser(), $user)) {
现在使用数组。当我们首先创建一个数组时,不要从字符串中更改它。