Mik*_*ike 2 php mysql sql arrays group-by
我的表看起来像这样:
artist_id | song_id | user_id
a1 s1 u1
a1 s2 u1
a2 s9 u1
a3 s15 u2
Run Code Online (Sandbox Code Playgroud)
我希望我的输出看起来像:
Array
(
[u1] => Array
(
[a1] => Array
(
[0] => s1
[1] => s2
)
[a2] => Array
(
[0] => s9
)
)
[u2] => Array
(
[a3] => Array
(
[0] => s15
)
)
Run Code Online (Sandbox Code Playgroud)
)
我应该从哪里开始?
我不确定我的方法是否最有效:
抓住并分组user_id,循环通过它们.
user_id抓住每个人artist_id.
对于每个artist_id抓住song_id下面的s.
有没有办法进行这一个查询?
您可以从MySQL查询中获取以下结果集.使用库PDO或MySQLi中的任何一个.
<?php
$results = array(
0 => array('artist_id' => 'a1', 'song_id' => 's1', 'user_id' => 'u1'),
1 => array('artist_id' => 'a1', 'song_id' => 's2', 'user_id' => 'u1'),
2 => array('artist_id' => 'a2', 'song_id' => 's9', 'user_id' => 'u1'),
3 => array('artist_id' => 'a3', 'song_id' => 's15', 'user_id' => 'u2')
);
echo '<pre>';print_r($results);echo '</pre>';
?>
Run Code Online (Sandbox Code Playgroud)
试试这个,
<?php
$new_array = array();
foreach($results as $keys=>$values) {
$new_array[$values['user_id']][$values['artist_id']][] = $values['song_id'];
}
echo '<pre>';print_r($new_array);echo '</pre>';
?>
Run Code Online (Sandbox Code Playgroud)
注意:您无法从单个查询中获取它,这取决于结果集.我用你的结果集解释了
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |