duankui1532 2017-04-03 04:14
浏览 57
已采纳

我怎么能在PHP中创建一个多维数组如下?

Hi guys i am trying to create a multi dimensional array as the format bellow but i am struggling to do so, any help would be appreciated. Thank you.

    $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);

This is what i am currently getting:

     [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 
                     ) )

But i am aiming to output it in the following format:

 '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
               )
  • 写回答

3条回答 默认 最新

  • dongxiang7276 2017-04-03 05:41
    关注

    You have to do it like below:-

      $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
    

    Note:-

    This line:-$trimmed_array_key=array_map('trim',$array_keys);

    Will do something like below:-

    https://eval.in/766605

    reference:- http://php.net/manual/en/function.array-combine.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加