gpt4 book ai didi

php - 不同目的地的数组排序算法

转载 作者:可可西里 更新时间:2023-10-31 23:17:14 26 4
gpt4 key购买 nike

我一直在努力解决这个问题,但没有成功。

问题是 - 我有一个用于不同位置的数组。

例如:

   Array
(
[0] => Array
(
[from] => Paris
[to] => Marseille
)

[1] => Array
(
[from] => Marseille
[to] => Valencia
)

[2] => Array
(
[from] => Valencia
[to] => Algiers
)

[3] => Array
(
[from] => Algiers
[to] => Abu Dhabi
)

)

无论我给出什么命令,它都应该始终返回下一个目的地“从”它结束的地方。

要排序的数组,以便 from 键从前一个数组的 to 键继续。

例如,如果我的起始位置是“Paris”,To 位置是“Marseille”,那么下一个数组顺序应该是 From“Marseille”和 To“Valencia”,下一个数组顺序应该是“Valencia”和“New location” ".

我不相信有没有内置函数可用。

最佳答案

只要链中没有中断(或循环),那么下面的函数应该构建一个排序的路由:

$from = array_column($route, 'from');
$to = array_column($route, 'to');
$start = array_diff($from, $to);

$sortedRoute = [$route[key($start)]];
$start = $route[key($start)]['to'];
while (true) {
$key = array_search($start, $from);
if ($key === false)
break;
$sortedRoute[] = $route[$key];
$start = $route[$key]['to'];
}

Demo

将会有更有效的方法来做到这一点,以及可以优化基本算法的方法,例如通过翻转 $from 以便可以直接通过键访问它而不是使用 array_search();但作为一个基本的路由器,它可以工作

关于php - 不同目的地的数组排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37139730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com