加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

合并类似的数组,PHP或MySQL

发布时间:2020-12-13 16:53:56 所属栏目:PHP教程 来源:网络整理
导读:所以我根据我做的一个查询得到了这个数组: array(5) { [1] = array(5) { ["user_id"] = int(659) ["auth_id"] = string(28) "uhhuhhoney" ["username"] = string(10) "MarkH" ["avatar_date"] = int(1374525025) ["gravatar"] = string(0) "" } [2] = array
所以我根据我做的一个查询得到了这个数组:

array(5) {
  [1] => array(5) {
    ["user_id"] => int(659)
    ["auth_id"] => string(28) "uhhuhhoney"
    ["username"] => string(10) "MarkH"
    ["avatar_date"] => int(1374525025)
    ["gravatar"] => string(0) ""
  }
  [2] => array(5) {
    ["user_id"] => int(326)
    ["auth_id"] => string(9) "rabits"
    ["username"] => string(9) "HankHill"
    ["avatar_date"] => int(1398866942)
    ["gravatar"] => string(0) ""
  }
  [3] => array(5) {
    ["user_id"] => int(326)
    ["auth_id"] => string(28) "identity_iml"
    ["username"] => string(9) "HankHill"
    ["avatar_date"] => int(1398866942)
    ["gravatar"] => string(0) ""
  }
  [4] => array(5) {
    ["user_id"] => int(1)
    ["auth_id"] => string(28) "barney"
    ["username"] => string(12) "Alice"
    ["avatar_date"] => int(1407362848)
    ["gravatar"] => string(0) ""
  }
  [5] => array(5) {
    ["user_id"] => int(1)
    ["auth_id"] => string(28) "a65s564sfad56654fsad"
    ["username"] => string(12) "Alice"
    ["avatar_date"] => int(1407362848)
    ["gravatar"] => string(0) ""
  }
}

我希望能够组合具有相同user_id的任何条目,这最终将组合数组键’auth_id’.现在我有点困惑,如果它可以通过MySQL或PHP.

我尝试使用GROUP_CONCAT函数尝试通过MySQL组合类似,但它只是将每个auth_id合并为一行.

查询如下:

SELECT mumble.*,user.username,user.avatar_date,user.gravatar,GROUP_CONCAT(mumble.auth_id)
FROM xf_mumble AS mumble
LEFT JOIN xf_user AS user ON (user.user_id = mumble.user_id)
ORDER BY mumble.user_id DESC,user.username

如果不可能通过MySQL,那我怎么能通过PHP有效地做到这一点,因为我想不出一个好的方法来做到这一点.我在想以下几点:

$results = array();

for (new $i = 0,$i < sizeof($query),$i++)
{
    if (array_key_exists($query[$i - 1]) && $query[$i - 1]['user_id'] = $query[$i]['user_id'])
    {
        $results[$i]['auth_id'][] = $query[$i]['auth_id'];
    }
}

谢谢!

解决方法

您的查询需要一个组:

SELECT mumble.*,GROUP_CONCAT(mumble.auth_id)
FROM xf_mumble AS mumble LEFT JOIN
     xf_user AS user
     ON (user.user_id = mumble.user_id)
GROUP BY mumble.user_id,user.username
ORDER BY mumble.user_id DESC,user.username

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读