通过爆炸PHP返回一组特定记录

时间:2017-01-17 00:24:56

标签: php

我正在尝试匹配与用户相关的特定记录集。例如,我试图通过检查用户是否是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"从第一个数组值只?我无法通过爆炸让它正常工作,但我想我可能做错了。

由于

1 个答案:

答案 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)) {

现在使用数组。当我们首先创建一个数组时,不要从字符串中更改它。