Php 使用模板对数组进行排序
我有一个多维数组用作模板,然后是另一个具有混合值的多维数组。我曾尝试对混合数组进行排序,使其看起来像模板数组,但目前仍然没有成功 模板数组:Php 使用模板对数组进行排序,php,arrays,Php,Arrays,我有一个多维数组用作模板,然后是另一个具有混合值的多维数组。我曾尝试对混合数组进行排序,使其看起来像模板数组,但目前仍然没有成功 模板数组: $routes = [['A','B','C','D'],['A','C','E','F'],['D','O','A','F']] $points = [['C','A','A','B','C','C'], ['E','E','C','A'],['F','O','O','A','A']] 路由数组是模板数组。 我试过这样的方法: for ($i=0;$i
$routes = [['A','B','C','D'],['A','C','E','F'],['D','O','A','F']]
$points = [['C','A','A','B','C','C'], ['E','E','C','A'],['F','O','O','A','A']]
路由数组是模板数组。
我试过这样的方法:
for ($i=0;$i<=$idx;$i++) {
$points1 = usort($points[$i], function($a, $b) use ($routes) {
return array_search($a, $routes[$i]) - array_search($b, $routes[$i]);
});
}
对于($i=0;$i您应该使用array\u keys
而不是array\u search
并将当前处理的$point的键发送到回调:
$routes = [['A','B','C','D'],['A','C','E','F'],['D','O','A','F']];
$points = [['C','A','A','B','C','C'], ['E','E','C','A'],['F','O','O','A','A']];
foreach ($points as $key => &$point) {
usort ($point, function ($a, $b) use ($key, $routes) {
return array_keys($routes[$key], $a) > array_keys($routes[$key], $b);
});
}
print_r($points);
输出:
Array
(
[0] => Array
(
[0] => A
[1] => A
[2] => B
[3] => C
[4] => C
[5] => C
)
[1] => Array
(
[0] => A
[1] => C
[2] => E
[3] => E
)
[2] => Array
(
[0] => O
[1] => O
[2] => A
[3] => A
[4] => F
)
)
不过你还没走那么远。谢谢你的回复,但是代码还不太好。。它没有按要求排序结果。@rosuandreimihai呃,那么您可能需要添加一些您期望的输出的详细信息。你不想用相应的路线来点积分吗?是的,但是给我的结果看起来和你的不同:[[C'、'A'、'A'、'B'、'C'、'C']、[E'、'E'、'C'、'A']、[F'、'O'、'O'、'A']@rosuandreimihai你复制了和我完全相同的代码吗?是否将引用(&
)包含在$point
变量上?否则,它不会排序任何内容。这就是为什么会有一个不变的结果。@rosuandreimihai当然,使用array()而不是[]来初始化数组:array(array('A','B','C','D'),array('A','C','E','F'),array('D','O','A','F')代码>