我有一个名为"traffic"的表和两列"line"(有50多行)和"vehicle"(超过300行)。此表包含所有线路及其所依赖的车辆的列表。每行都有几辆车辆,我需要将它们(车辆)按行分组。
line | vehicle
______________________
line_a | veh1
line_a | veh12
line_a | veh123
line_b | veh14
line_b | veh15
line_b | veh16
line_c | veh17
line_c | veh18
预期输出
line_a | line_b | line_c | .... to line 50
______________________________________
veh1 veh14 veh17
veh12 veh15 veh18
veh123 veh16
有什么办法可以做到这一点吗?
- 全部加载到 PHP 数组
- 迭代一次并通过 $helparr[$line]=array() 收集唯一行,但也收集每行的值array_push($helparr[$line],$vehicle)
- 再次迭代:对于所有$helparr(输出$line,对于所有$helparr[$line](输出$vehicle))
。猜猜,你的编码工作现在已经完成了一半......
首先,您需要从数据库中获取所有记录,在这里,我使用了一个演示数组$input
例如,当您从数据库获取时不需要此数组,您可以从foreach
<?php
$input = array(0=>array('line'=>'line_a','vehicle'=>'veh1'),
1=>array('line'=>'line_b','vehicle'=>'veh2'),
2=>array('line'=>'line_c','vehicle'=>'veh6'),
3=>array('line'=>'line_a','vehicle'=>'veh5'),
4=>array('line'=>'line_c','vehicle'=>'veh9')
);
$newArr =array();
foreach($input as $key =>$val)
{
$newArr[$val['line']][] = $val['vehicle'];
}
echo "<pre>"; print_r($newArr);
?>
您的$newArr
如下所示
Array
(
[line_a] => Array
(
[0] => veh1
[1] => veh5
)
[line_b] => Array
(
[0] => veh2
)
[line_c] => Array
(
[0] => veh6
[1] => veh9
)
)
您的车辆根据各自的生产线进行分类,您可以根据需要使用$newArray
进行打印。我希望这对你有用!