php – 从一对多的mysql结果创建多维数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 从一对多的mysql结果创建多维数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2176字,纯文字阅读大概需要4分钟。
内容图文
![php – 从一对多的mysql结果创建多维数组](/upload/InfoBanner/zyjiaocheng/898/baf06dc2f9b9408a83396c4985327c8d.jpg)
我有三个mysql表:客户,汽车和保险.每个客户可以拥有多辆汽车,每辆汽车都有多种保险政策.这是我的查询和sqlfiddle的链接:
SELECT
a.*,
b.id AS car_id, b.license_number, b.brand, b.model,
c.id AS insurance_id, c.insurance_company, c.start_date, c.end_date, c.price
FROM clients a
LEFT JOIN cars b ON a.id = b.client_id
LEFT JOIN insurance c ON b.id = c.car_id
http://sqlfiddle.com/#!2/773a5/1
因此,对于两个客户,其中第一个客户有两辆车和三个保险单,第二个客户没有车和没有保险,查询将返回4行.
我无法弄清楚的是如何循环此查询以返回以下结构,同时避免重复的客户端条目.
Array
(
[0] => Array
(
[id] => 1
[first_name] => John
[last_name] => Smith
[cars] => Array
(
[id] => 1
[license_number] => 'plate1'
[brand] => 'BMW'
[model] => 'E35'
[insurance] => Array
(
[id] => 1
[start_date] => '2015-02-10'
[end_date] => '2016-02-10'
[price] => '100'
)
(
[id] => 2
[start_date] => '2014-02-10'
[end_date] => '2015-02-10'
[price] => '50'
)
)
(
[id] => 2
[license_number] => 'plate2'
[brand] => 'VW'
[model] => 'Golf'
[insurance] => Array
(
[id] => 3
[start_date] => '2015-02-10'
[end_date] => '2016-02-10'
[price] => '100'
)
)
)
[1] => Array
(
[id] => 1
[first_name] => John
[last_name] => Smith
[cars] => NULL
)
)
解决方法:
这很容易.它是关于使用assoc数组.您可以使用id,car_id和insurance_id作为数组键.
因此,假设您将结果作为存储在$rows变量中的获取的assoc行.简单的循环将是:
$result = array();
foreach($rows as $row) {
$id = $row['ID'];
$carId = $row['CAR_ID'];
$insId = $row['INSURANCE_ID'];
$result[$id]['first_name'] = $row['FIRST_NAME'];
$result[$id]['last_name'] = $row['LAST_NAME'];
if(!isset($result[$id]['cars'])) {
$result[$id]['cars'] = array();
}
if($carId && !isset($result[$id]['cars'][$carId])) {
$car = array(
'id' => $row['CAR_ID'],
'license_number' => $row['LICENSE_NUMBER'],
'brand' => $row['BRAND'],
'model' => $row['MODEL'],
'insurance' => array()
);
$result[$id]['cars'][$carId] = $car;
}
if($insId && isset($result[$id]['cars'][$carId]) && !isset($result[$id]['cars'][$carId]['insurance'][$insId])) {
$insurance = array(
'id' => $row['INSURANCE_ID'],
'start_date' => $row['START_DATE'],
'end_date' => $row['END_DATE'],
'price' => $row['PRICE']
);
$result[$id]['cars'][$carId]['insurance'][$insId] = $insurance;
}
}
内容总结
以上是互联网集市为您收集整理的php – 从一对多的mysql结果创建多维数组全部内容,希望文章能够帮你解决php – 从一对多的mysql结果创建多维数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。