Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中创建如下所示的多维数组?_Php_Mysql_Sql_Arrays_Sorting - Fatal编程技术网

如何在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,只是我的运气,夜猫子,蛇