gpt4 book ai didi

php - 将数组从 MySQL JOIN(有重复项)转换为嵌套关联数组

转载 作者:行者123 更新时间:2023-11-29 00:17:00 24 4
gpt4 key购买 nike

我从 MySQL JOIN 得到以下结果:

+------------+----------------+-----------+---------+
| session_id | session_name | user_name | user_id |
+------------+----------------+-----------+---------+
| 13 | Test session 1 | User 1 | 29 |
| 13 | Test session 1 | User 2 | 30 |
| 14 | test session 2 | User 1 | 31 |
| 14 | test session 2 | User 2 | 32 |
| 14 | test session 2 | User 3 | 33 |
| 14 | test session 2 | User 4 | 34 |
+------------+----------------+-----------+---------+

... 生成此 PHP 数组:

Array
(
[0] => Array
(
[session_id] => 13
[session_name] => Test session 1
[user_name] => User 1
[user_id] => 29
)

[1] => Array
(
[session_id] => 13
[session_name] => Test session 1
[user_name] => User 2
[user_id] => 30
)

[2] => Array
(
[session_id] => 14
[session_name] => test session 2
[user_name] => User 1
[user_id] => 31
)

[3] => Array
(
[session_id] => 14
[session_name] => test session 2
[user_name] => User 2
[user_id] => 32
)

[4] => Array
(
[session_id] => 14
[session_name] => test session 2
[user_name] => User 3
[user_id] => 33
)

[5] => Array
(
[session_id] => 14
[session_name] => test session 2
[user_name] => User 4
[user_id] => 34
)
)

如何通过过滤 session_id 重复项将其处理成以下嵌套数组?

Array
(
[0] => Array
(
[session_id] => 13
[session_name] => Test session 1
[user] => Array
(
[0] => Array
(
[user_name] => User 1
[user_id] => 29
)
[1] => Array
(
[user_name] => User 2
[user_id] => 30
)
)
)

[1] => Array
(
[session_id] => 14
[session_name] => test session 2
[user] => Array
(
[0] => Array
(
[user_name] => User 1
[user_id] => 31
)
[1] => Array
(
[user_name] => User 2
[user_id] => 32
)
[2] => Array
(
[user_name] => User 3
[user_id] => 33
)
[3] => Array
(
[user_name] => User 4
[user_id] => 34
)
)
)
)

最佳答案

尝试:

/* The first foreach stores the number of times each session_id is repeated */
$session_ids = array();
foreach($array as $k=>$v){

if(!array_key_exists($v['session_id'], $session_ids)){
$session_ids[$v['session_id']] = 1;
}
else
{
$session_ids[$v['session_id']] += 1;
}
}


/*The second foreach will store each session_id once and loop through to
the original array to find user details of that session_id and store them
as nested arrays*/
$new_array = array();
$counter = 0;
foreach($session_ids as $k=>$v){
$new_array[$counter]['session_id'] = $k;
foreach($array as $k1=>$v1){
if($v1['session_id'] == $k)
{
$new_array[$counter]['session_name'] = $v1['session_name'];
$new_array[$counter]['user'][] = array('user_name'=>$v1['user_name'], 'user_id'=>$v1['user_id']);
}
}

$counter++;
}

Demo

关于php - 将数组从 MySQL JOIN(有重复项)转换为嵌套关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com