大家好,我正试图用uasort订购这个多维数组,但我不知道问题出在哪里。
这只是uasort的问题,对于,数组都可以。
我会继续调查我的问题在哪里,感谢大家的帮助。
array(4)
{ ["id_vehiculo"]=>
array(4) { [0]=> int(9)
[1]=> int(3)
[2]=> int(1)
[3]=> int(4)
}
["fecha_gps"]=>
array(4) { [0]=> string(4) "2014"
[1]=> string(4) "2015"
[2]=> string(4) "2016"
[3]=> string(4) "2017"
}
["id_tipo_posicion"]=>
array(4) { [0]=> int(11111)
[1]=> int(22222)
[2]=> int(33333)
[3]=> int(44444)
}
["cercanos"]=>
array(4) { [0]=> int(345)
[1]=> int(712)
[2]=> int(10)
[3]=> int(35)
}
}
}
function asd2($matriz_up,$m_vehiculo_distancias){
$total_vehiculos=count($matriz_up['id_vehiculo']);
//resetear las keys de vehiculos para coger bien los kms y asignarlos
$a_vehiculo_distancia = array_values($m_vehiculo_distancias);
//Asignar ditancias cercanos
for($i=0;$i<$total_vehiculos;$i++){
$matriz_up['cercanos'][$i] = $a_vehiculo_distancia[$i];
echo "id = ".$matriz_up['id_vehiculo'][$i]."<br>";
echo "pos = ".$matriz_up['id_tipo_posicion'][$i]."<br>";
echo "fecha = ".$matriz_up['fecha_gps'][$i]."<br>";
echo "kms = ".$matriz_up['cercanos'][$i]."<br>";
echo "----------------------<br>";
}
echo "----------------------<br>";
echo "----------------------<br>";
echo "----------------------<br>";
uasort($matriz_up, function($a, $b) {
return $a['cercanos'] - $b['cercanos'];
});
for($i=0;$i<$total_vehiculos;$i++){
$matriz_up['cercanos'][$i] = $a_vehiculo_distancia[$i];
echo "id = ".$matriz_up['id_vehiculo'][$i]."<br>";
echo "pos = ".$matriz_up['id_tipo_posicion'][$i]."<br>";
echo "fecha = ".$matriz_up['fecha_gps'][$i]."<br>";
echo "kms = ".$matriz_up['cercanos'][$i]."<br>";
echo "----------------------<br>";
}
}
$matriz_up['id_vehiculo'][0] = 9;
$matriz_up['fecha_gps'][0] = '2014';
$matriz_up['id_tipo_posicion'][0] = 11111;
$matriz_up['cercanos'][0] = 0;
$matriz_up['id_vehiculo'][1] = 3;
$matriz_up['fecha_gps'][1] = '2015';
$matriz_up['id_tipo_posicion'][1] = 22222;
$matriz_up['cercanos'][1] = 0;
$matriz_up['id_vehiculo'][2] = 1;
$matriz_up['fecha_gps'][2] = '2016';
$matriz_up['id_tipo_posicion'][2] = 33333;
$matriz_up['cercanos'][2] = 0;
$matriz_up['id_vehiculo'][3] = 4;
$matriz_up['fecha_gps'][3] = '2017';
$matriz_up['id_tipo_posicion'][3] = 44444;
$matriz_up['cercanos'][3] = 0;
$m_vehiculo_distancias[9] = 345;
$m_vehiculo_distancias[3] = 712;
$m_vehiculo_distancias[1] = 10;
$m_vehiculo_distancias[4] = 35;
asd2($matriz_up,$m_vehiculo_distancias);
-
你的阵列结构相当疯狂。您应该将相关信息作为一个单元保存在一起,而不是分散在多个阵列上。你应该有一个单元看起来像:
['id_vehiculo' => 9, 'fetcha_gps' => 2014, 'id_tipo_posicion' => 11111, ...]
然后你会有一个这样的阵列阵列:
[ ['id_vehiculo' => 9, 'fetcha_gps' => 2014, 'id_tipo_posicion' => 11111, ...], ['id_vehiculo' => ..., 'fetcha_gps' => ..., 'id_tipo_posicion' => ..., ...], ... ]
-
话虽如此,
usort
在您的情况下不会对您有太大帮助,因为您需要同步地将多个数组排序在一起。为此,有array_multisort
:array_multisort($matriz_up['cercanos'], $matriz_up['id_vehiculo'], /* list all your arrays here */);
好了,伙计们,这里是新的结构:
array(4) {
[0]=> array(4) {
["id_vehiculo"]=> int(9)
["fecha_gps"]=> string(4) "2014"
["id_tipo_posicion"]=> int(11111)
["cercanos"]=> int(345) }
[1]=> array(4) {
["id_vehiculo"]=> int(3)
["fecha_gps"]=> string(4) "2015"
["id_tipo_posicion"]=> int(22222)
["cercanos"]=> int(712) }
[2]=> array(4) {
["id_vehiculo"]=> int(1)
["fecha_gps"]=> string(4) "2016"
["id_tipo_posicion"]=> int(33333)
["cercanos"]=> int(10) }
[3]=> array(4) { ["id_vehiculo"]=> int(4)
["fecha_gps"]=> string(4) "2017"
["id_tipo_posicion"]=> int(44444)
["cercanos"]=> int(35) }
}
现在我怎么能按["cercanos"]点菜?
现在我正在移动所有的信息,但"机器人"没有移动,不知道为什么。。。
$prova = array();
foreach ($a_vehiculo_distancia as $key) {
$prova[] = $key;
}
array_multisort($prova, SORT_ASC, $matriz_up);