如何根据我的需要在PHP中格式化数组?
我有一个简单的目的地数据库如何根据我的需要在PHP中格式化数组?,php,mysql,sql,Php,Mysql,Sql,我有一个简单的目的地数据库 $sql=mysqli_query($con,"SELECT * FROM users,rating WHERE users.user_id=rating.user_id GROUP BY rating.user_id"); $output=array(); while($hsl=mysqli_fetch_array($sql)){ $str=$hsl['username']; $sql1=mysqli_query($con,"SELECT * FROM des
$sql=mysqli_query($con,"SELECT * FROM users,rating WHERE users.user_id=rating.user_id GROUP BY rating.user_id");
$output=array();
while($hsl=mysqli_fetch_array($sql)){
$str=$hsl['username'];
$sql1=mysqli_query($con,"SELECT * FROM destination,rating WHERE rating.dest_id=destination.dest_id AND rating.user_id='$hsl[user_id]'");
while($hsl1=mysqli_fetch_array($sql1)){
$user_id=$hsl1['user_id'];
$title=$hsl1['title'];
$rating1=$hsl1['1_rating'];
$rating2=$hsl1['2_rating'];
$rating3=$hsl1['3_rating'];
$rating4=$hsl1['4_rating'];
$avg=($rating1+$rating2+$rating3+$rating4) / 4;
$str1=$title;
$str2=$avg;
如何格式化数组以获得每个用户的结果,如下所示
$rekom = array(
"user1" => array("Monumen Nasional" => 3.25,
"Kota Tua" => 3,
"Tidung Island" => 2),
"user2" => array("Monumen Nasional" => 3.5, "Kota Tua" => 4.25,
"Tidung Island" => 2),
"user3" => array("Monumen Nasional" => 2.25, "Kota Tua" => 4.5,
"Tidung Island" => 3.75),
"user4" => array("Monumen Nasional" => 2, "Kota Tua" => 4, "Tidung Island" => 4),
"user5" => array("Monumen Nasional" => 4.25, "Tidung Island" => 4)
))
我已尝试此代码,但无法解析所有用户:
$rekom = array($str => array($title => $str2));
您可以使用
joins
获取所需的所有信息,这样您就可以有一个查询,而不是数据库中的1+个用户。如果您有很多用户,那么这将带来巨大的性能优势
下面我假设您将目的地名称保存在一列标题中,这些值为“user1”、“user2”。。。存储在user\u id
列中。如果列名不同,请随意更改我的代码
$sql = "SELECT * FROM users
INNER JOIN rating ON users.user_id=rating.user_id
INNER JOIN destination ON rating.dest_id = destination.dest_id";
$result = mysqli_query($con, $sql);
$reviews = [];
while($row = mysqli_fetch_array($result)) {
$rating = ($row['1_rating'] + $row['2_rating'] + $row['3_rating'] + $row['4_rating']) / 4;
$reviews[$row['user_id']][$row['title']] = $rating;
}
print_r($reviews);
这将为您提供所有有用户评论的目的地
编辑
您可以通过在选择中添加平均值(1\u评级+2\u评级+3\u评级+4\u评级)
来计算平均值。此外,您还应按目的地id、用户id添加组,请阅读。使用with,而不是使用字符串连接生成查询。请参阅和,以获取一些好的示例。您的标题似乎与实际问题完全不同,请您改写您的标题好吗?@AlexHowansky谢谢您的参考资料。Script47感谢爱迪生先生的警告,您的代码运行良好,并生成所有用户评论。非常感谢……:)