こんにちは、私はこの多次元配列をuasortで注文しようとしていますが、どこに問題があるのかわかりません。多次元配列をusortエラーで注文する
これは問題の原因であり、配列はすべて問題ありません。
私はどこで問題が発生しているか調査します。
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);
正気配列構造に切り替えてみてください知っている: '[0 => [ 'id_vehiculo' => ...、...]、1 => ['id_vehiculo' => ...、...]] '。すべての 'usort'の例はおそらく、このような構造を想定しています。 – deceze
はい、それは解決策ですが、私はcodで多くの変更を行う必要があります。 –