PHP数组和顺序排序

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”:

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](