【发布时间】:2021-08-04 07:30:47
【问题描述】:
我想弄清楚如何创建(子数组)?我不确定这是否是正确的术语,但我在下面列出了一些示例。
基本上,我想为每个度假村创建一个数组。在该数组中,我想要每个房间的数组/子数组。
感谢任何帮助。
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbh = new PDO("mysql:host=$servername;dbname=checkavail", $username, $password);
$checkin = $_POST['checkin'];
$checkout = $_POST['checkout'];
$occupants = $_POST['occupants'];
$sql=
"SELECT
MIN(staydate) AS checkin,
MAX(staydate) AS lastnight,
MIN(available) AS available,
ra.resort AS resortcode,
ri.resort AS resortname,
ri.room AS roomname,
ri.roomcode AS roomcode,
ri.view AS viewname,
SUM(ra.points) AS points,
ri.sqfoot AS sqfoot,
ri.description AS roomdescription,
ri.bedding AS bedding,
ri.amenities AS amenities,
ri.sleeps AS sleeps,
ri.sleep_details AS sleepdetails,
ri.layout_img AS layoutimg,
ri.room_img AS roomimg,
ri.roomimg_thumb AS roomimgthumb
FROM resort_availability AS ra
LEFT JOIN room_info AS ri ON (ra.room = ri.roomcode)
WHERE staydate >= '$checkin' AND staydate < '$checkout'
AND sleeps >= '$occupants'
GROUP BY resortname, roomname
ORDER BY points
";
$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$return = [];
foreach ($result as $row) {
$points = $row['points'];
$price = $points*20;
$pricefrmt = "$".number_format ($price, 2);
$return[] = [
'resort' => $row['resortname'],
'room' => $row['roomname'],
'price' => $pricefrmt
];
}
$dbh = null;
header('Content-type: application/json');
echo json_encode($return);
?>
这是当前输出:
[
{
"resort":"Resort1",
"room":"DStudio",
"price":"$2,560.00"
},
{
"resort":"Resort1",
"room":"TVilla",
"price":"$3,980.00"
},
{
"resort":"Resort1",
"room":"1-Bedroom Villa",
"price":"$5,460.00"
},
{
"resort":"Resort1",
"room":"2-Bedroom LO Villa",
"price":"$7,040.00"
},
{
"resort":"Resort1",
"room":"2-Bedroom Villa",
"price":"$7,040.00"
},
{
"resort":"Resort1",
"room":"3-Bedroom Villa",
"price":"$15,620.00"
},
{
"resort":"Resort2",
"room":"DStudio",
"price":"$2,560.00"
},
{
"resort":"Resort2",
"room":"TVilla",
"price":"$3,980.00"
},
{
"resort":"Resort2",
"room":"1-Bedroom Villa",
"price":"$5,460.00"
},
{
"resort":"Resort2",
"room":"2-Bedroom LO Villa",
"price":"$7,040.00"
},
{
"resort":"Resort2",
"room":"2-Bedroom Villa",
"price":"$7,040.00"
},
{
"resort":"Resort2",
"room":"3-Bedroom Villa",
"price":"$15,620.00"
}
]
但我希望它看起来更像这样......(如果格式看起来有点奇怪,那是因为我是这方面的菜鸟)
[
{
"resort":"Resort1"
[
{
"room":"DStudio",
"price":"$2,560.00"
},
{
"room":"TVilla",
"price":"$3,980.00"
},
{
"room":"1-Bedroom Villa",
"price":"$5,460.00"
},
{
"room":"2-Bedroom LO Villa",
"price":"$7,040.00"
},
{
"room":"2-Bedroom Villa",
"price":"$7,040.00"
},
{
"room":"3-Bedroom Villa",
"price":"$15,620.00"
}
]
}
{
"resort":"Resort2"
[
{
"room":"DStudio",
"price":"$2,560.00"
},
{
"room":"TVilla",
"price":"$3,980.00"
},
{
"room":"1-Bedroom Villa",
"price":"$5,460.00"
},
{
"room":"2-Bedroom LO Villa",
"price":"$7,040.00"
},
{
"room":"2-Bedroom Villa",
"price":"$7,040.00"
},
{
"room":"3-Bedroom Villa",
"price":"$15,620.00"
}
]
}
]
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!