如何在php中创建如下所示的多维数组?
大家好,我正在尝试创建一个多维数组,格式如下,但我正在努力做到这一点,任何帮助将不胜感激。多谢各位如何在php中创建如下所示的多维数组?,php,mysql,sql,arrays,sorting,Php,Mysql,Sql,Arrays,Sorting,大家好,我正在尝试创建一个多维数组,格式如下,但我正在努力做到这一点,任何帮助将不胜感激。多谢各位 $movies = array(); $sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating FROM `rating` AS r JOIN `uploads` AS v ON r.video_id = v
$movies = array();
$sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[] = $result;
}
foreach($movies as $k => $v){
unset($movies[$k]);
$movies[$v['Username']] = $v;
}
foreach($movies as $k => $v){
unset($movies[$k]['Username']);
}
print_r($movies);
这是我目前得到的:
[user1] => Array ( [Video_title] => Snakes on the Plane,
Superman Returns,
The Night Listner,
Lady in the Water,
Just my Luck,
You me and Dupree
[Rating] => 3.5,
3.5,
3,
2.5,
3,
2.5
) )
但我的目标是以以下格式输出:
'user1' =>
array('Lady in the Water' => 2.5,
'Snakes on a Plane' => 3.5,
'Just My Luck' => 3.0,
'Superman Returns' => 3.5,
'You, Me and Dupree' => 2.5,
'The Night Listener' => 3.0
)
更改以下行:
$movies[$v['Username']] = $v;
到
然后再试一次。它将在每次迭代的
Username
索引下创建一个新数组。更改以下行:
$movies[$v['Username']] = $v;
到
然后再试一次。它将在每次迭代的
Username
索引下创建一个新数组。尝试以下代码以获得目标结果:
$movies = array();
$sql = "
SELECT u.username AS Username, v.title AS Video_title, r.rate AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[$result['Username']][$result['Video_title']] = $result['Rating'];
}
print_r($movies);
为获得瞄准效果,请尝试以下代码:
$movies = array();
$sql = "
SELECT u.username AS Username, v.title AS Video_title, r.rate AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[$result['Username']][$result['Video_title']] = $result['Rating'];
}
print_r($movies);
您必须按照以下方式进行操作:-
$movies = array();
$sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[] = $result;
}
$new_movies = array(); // a new array variable
foreach($movies as $k => $v){
$array_keys = explode(',',$v['Video_title']); // explode Video_title string into array
$trimmed_array_key=array_map('trim',$array_keys); // trim all spaces from each value of $trimmed_array_key array
$array_values = explode(',',$v['Rating']); // explode Rating array
$trimmed_array_values=array_map('trim',$array_values);//remove all spaces from $trimmed_array_values array
$new_movies[$v['Username']] = array_combine($trimmed_array_key,$trimmed_array_values); // combine $trimmed_array_key array and $trimmed_array_values array and assign to corresponding user
}
echo "<pre/>";print_r($new_movies); // print new array
$movies=数组();
$sql=“选择u.username作为用户名,选择group_concat(v.title)作为视频_title,选择group_concat(r.rate)作为评级
从'rating'改为r
在r.video\u id=v.vid\u id上以v的形式加入'uploads'
在u.user\u id=r.rater\u id上以u的身份加入'users'
按用户名分组”;
$query=mysqli\u query($conn,$sql);
while($result=mysqli\u fetch\u assoc($query)){
$movies[]=$result;
}
$new_movies=array();//一种新的数组变量
foreach($k=>v){
$array_keys=explode(',',$v['Video_title']);//将Video_title字符串分解为数组
$trimmed_array_key=array_map('trim',$array_key);//从$trimmed_array_key数组的每个值中修剪所有空格
$array_values=explode(“,”,$v['Rating']);//explode Rating数组
$trimmed_array_values=array_map('trim',$array_values);//从$trimmed_array_values数组中删除所有空格
$new_movies[$v['Username']]=array_combine($trimmed_array_key,$trimmed_array_value);//组合$trimmed_array_key数组和$trimmed_array_value数组并分配给相应的用户
}
回声“;打印(新电影);//打印新阵列
注:-
此行:-$trimmed\u array\u key=array\u map('trim',$array\u key)代码>
将执行以下操作:-
$movies = array();
$sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[] = $result;
}
$new_movies = array(); // a new array variable
foreach($movies as $k => $v){
$array_keys = explode(',',$v['Video_title']); // explode Video_title string into array
$trimmed_array_key=array_map('trim',$array_keys); // trim all spaces from each value of $trimmed_array_key array
$array_values = explode(',',$v['Rating']); // explode Rating array
$trimmed_array_values=array_map('trim',$array_values);//remove all spaces from $trimmed_array_values array
$new_movies[$v['Username']] = array_combine($trimmed_array_key,$trimmed_array_values); // combine $trimmed_array_key array and $trimmed_array_values array and assign to corresponding user
}
echo "<pre/>";print_r($new_movies); // print new array
参考资料:-您必须按照以下方式操作:-
$movies = array();
$sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[] = $result;
}
$new_movies = array(); // a new array variable
foreach($movies as $k => $v){
$array_keys = explode(',',$v['Video_title']); // explode Video_title string into array
$trimmed_array_key=array_map('trim',$array_keys); // trim all spaces from each value of $trimmed_array_key array
$array_values = explode(',',$v['Rating']); // explode Rating array
$trimmed_array_values=array_map('trim',$array_values);//remove all spaces from $trimmed_array_values array
$new_movies[$v['Username']] = array_combine($trimmed_array_key,$trimmed_array_values); // combine $trimmed_array_key array and $trimmed_array_values array and assign to corresponding user
}
echo "<pre/>";print_r($new_movies); // print new array
$movies=array();
$sql=“选择u.username作为用户名,选择group_concat(v.title)作为视频_title,选择group_concat(r.rate)作为评级
从'rating'改为r
在r.video\u id=v.vid\u id上以v的形式加入'uploads'
在u.user\u id=r.rater\u id上以u的身份加入'users'
按用户名分组”;
$query=mysqli\u query($conn,$sql);
while($result=mysqli\u fetch\u assoc($query)){
$movies[]=$result;
}
$new_movies=array();//一种新的数组变量
foreach($k=>v){
$array_keys=explode(',',$v['Video_title']);//将Video_title字符串分解为数组
$trimmed_array_key=array_map('trim',$array_key);//从$trimmed_array_key数组的每个值中修剪所有空格
$array_values=explode(“,”,$v['Rating']);//explode Rating数组
$trimmed_array_values=array_map('trim',$array_values);//从$trimmed_array_values数组中删除所有空格
$new_movies[$v['Username']]=array_combine($trimmed_array_key,$trimmed_array_value);//组合$trimmed_array_key数组和$trimmed_array_value数组并分配给相应的用户
}
回声“;打印(新电影);//打印新阵列
注:-
此行:-$trimmed\u array\u key=array\u map('trim',$array\u key)代码>
将执行以下操作:-
$movies = array();
$sql = "SELECT u.username AS Username, group_concat(v.title) AS Video_title, group_concat(r.rate) AS Rating
FROM `rating` AS r
JOIN `uploads` AS v ON r.video_id = v.vid_id
JOIN `users` as u ON u.user_id = r.rater_id
GROUP by Username" ;
$query = mysqli_query($conn, $sql);
while($result = mysqli_fetch_assoc($query)){
$movies[] = $result;
}
$new_movies = array(); // a new array variable
foreach($movies as $k => $v){
$array_keys = explode(',',$v['Video_title']); // explode Video_title string into array
$trimmed_array_key=array_map('trim',$array_keys); // trim all spaces from each value of $trimmed_array_key array
$array_values = explode(',',$v['Rating']); // explode Rating array
$trimmed_array_values=array_map('trim',$array_values);//remove all spaces from $trimmed_array_values array
$new_movies[$v['Username']] = array_combine($trimmed_array_key,$trimmed_array_values); // combine $trimmed_array_key array and $trimmed_array_values array and assign to corresponding user
}
echo "<pre/>";print_r($new_movies); // print new array
参考:-您想要的输出与您得到的完全不同(在索引方面,或者您可以说是列名)。那不是possible@AlivetoDie我并不是真的想让输出与值中的输出完全相同,而是想改变所使用的数组的数量。M.Khalaf检查我的答案,一旦你想要的输出与你得到的完全不同(在索引方面或者你可以说列名方面)。那不是possible@AlivetoDie我不是真的想让输出与值中的输出完全相同,但我正在寻找所用数组数量的变化。M.Khalaf检查我的答案这是我得到的输出:数组([Mohamed]=>Array([0]=>Array([Username]=>Mohamed[Video_title]=>水中的女士,只是我的运气,夜猫子,飞机上的蛇,超人归来,你我和杜普利[Rating]=>3,1.5,3,3.5,5,3.5],[user1]=>Array([0]=>Array([Username]=>user1[Video_title]=>飞机上的蛇,超人归来,夜猫子,水中的女士,只是我的运气,你我和杜普利[Rating]=>3.5,3,2.5,2.5)))阵列上的阵列太多您想要的格式与您得到的完全不同。您建议我改进什么?@M.Khalaf检查我的答案并尝试一下这是我得到的输出:阵列([Mohamed]=>Array([0]=>Array([Username]=>Mohamed[视频标题]=>水中的女士,只是我的运气,夜猫子,飞机上的蛇,超人归来,你我和杜普利[Rating]=>3,1.5,3,3.5,5,3.5],[user1]=>Array([0]=>Array([Username]=>user1[Video_title]=>飞机上的蛇,超人归来,夜猫子,水中的女士,只是我的运气,你我和杜普利[Rating]=>3.5,3,2.5,2.5)))阵列上的阵列太多您想要的格式与您得到的格式完全不同。您建议我改进什么?@M.Khalaf检查我的答案并尝试一下不完全正确这是我现在得到的:阵列([Mohamed]=>Array([水中的女士,只是我的运气,夜猫子,飞机上的蛇,超人回来,你我和杜普利]=>3,1.5,3,3.5,5,3.5)[0]=>3,1.5,3,3.5,5,3.5[user1]=>数组([飞机上的蛇,超人回来,夜猫子,水中的女士,只是我的运气,你我和杜普利]=>3.5,3,2.5,3.5)[1]=>3.5,3.5,3,2.5,3,2.5)从select查询中删除组concat。并使用此代码。不太清楚这是我现在得到的:数组([Mohamed]=>Array([Lady in the Water,只是我的运气,夜猫子,蛇