PHP数组和顺序排序
我必须为全国各地的不同客户创建运输订单的配送路线。路线是固定的,这意味着每条路线内的交付点按特定顺序排列,路线中各点之间的里程在路线矩阵中定义。因此,路线中的每个点都有距离路线的每个点之间的公里数 因此,我用点定义了路线“route_A”:PHP数组和顺序排序,php,arrays,Php,Arrays,我必须为全国各地的不同客户创建运输订单的配送路线。路线是固定的,这意味着每条路线内的交付点按特定顺序排列,路线中各点之间的里程在路线矩阵中定义。因此,路线中的每个点都有距离路线的每个点之间的公里数 因此,我用点定义了路线“route_A”: Route_A = ['Point_1','Point_2','Point_3','Point_4', 'Point_5'] 矩阵形式如下所示: Warehouse Point_1 Point_2 Point_3 Point_4
Route_A = ['Point_1','Point_2','Point_3','Point_4', 'Point_5']
矩阵形式如下所示:
Warehouse Point_1 Point_2 Point_3 Point_4 Point_5
Warehouse 0 10 20 30 40 50
Point_1 10 0 15 25 35 45
Point_2 20 15 0 5 20 70
Point_3 30 25 5 0 50 25
Point_4 40 35 20 50 0 10
Point_5 50 45 70 25 10 0
$delivery_length = 0;
for ($i = 1, $route_len = count($delivery_route); $i < $route_len; $i++) {
$delivery_length += $distance_matrix[$delivery_route[$i-1]][$delivery_route[$i]];
}
计划者从路线中选择点(不总是完整路线),我希望系统能够计算给定路线的总距离
因此,我可以有一条这样的配送路线(上面有路线上的点)(路线的顺序也必须重新排列为“路线a”):
我想知道这是否可以很容易地完成,而不必编写凌乱的php代码您可以这样做:
Warehouse Point_1 Point_2 Point_3 Point_4 Point_5
Warehouse 0 10 20 30 40 50
Point_1 10 0 15 25 35 45
Point_2 20 15 0 5 20 70
Point_3 30 25 5 0 50 25
Point_4 40 35 20 50 0 10
Point_5 50 45 70 25 10 0
$delivery_length = 0;
for ($i = 1, $route_len = count($delivery_route); $i < $route_len; $i++) {
$delivery_length += $distance_matrix[$delivery_route[$i-1]][$delivery_route[$i]];
}
$delivery\u length=0;
对于($i=1,$route\u len=count($delivery\u route);$i<$route\u len;$i++){
$delivery_length+=$distance_matrix[$delivery_route[$i-1]][$delivery_route[$i]];
}
它迭代路线中的位置列表,并将上一站到当前站的距离相加。问题是什么?有什么不起作用的吗?只是补充了一个问题,谢谢!你试过什么吗?如何存储距离?(你的矩阵:数据库?数组?)需要知道给出的矩阵是什么格式才能提供最有效的答案。所有数据都存储在MySQL数据库中,距离存储在如下表中:{id | route | id | pFrom | pTo | distance}其中pFrom和pTo是RouteEyes中点的id,这是我最初的想法,但是,然后我意识到解决方案必须更加复杂,请记住,计划者给出的点数顺序不正确。您可以在
配送路线上使用uasort
,并将路线作为优先级列表。请参阅PHP文档。我发现了一些对用户数组排序有用的东西:[link](