Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用usort错误对多维数组进行排序_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 使用usort错误对多维数组进行排序

Php 使用usort错误对多维数组进行排序,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,大家好,我正试图用uasort订购这个多维数组,但我不知道问题出在哪里 这只是问题所在,阵列都可以 我会继续调查我的问题,谢谢大家的帮助 array(4) { ["id_vehiculo"]=> array(4) { [0]=> int(9) [1]=> int(3) [2]=> int(1)

大家好,我正试图用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);
数组(4)
{[“id_vehiculo”]=>
数组(4){[0]=>int(9)
[1] =>int(3)
[2] =>int(1)
[3] =>int(4)
} 
[“fecha_gps”]=>
数组(4){[0]=>字符串(4)“2014”
[1] =>字符串(4)“2015”
[2] =>字符串(4)“2016”
[3] =>字符串(4)“2017”
} 
[“id\u tipo\u posicion”]=>
数组(4){[0]=>int(11111)
[1] =>int(22222)
[2] =>int(33333)
[3] =>int(44444)
} 
[“塞尔卡诺斯”]=>
数组(4){[0]=>int(345)
[1] =>int(712)
[2] =>int(10)
[3] =>int(35)
} 
} 
}
函数asd2($matriz_up,$m_vehicle_distance){
$total_vehiculos=计数($matriz_up['id_vehiculos']);
//重新设置公里和亚洲的车辆钥匙
$a_vehiculo_distance=数组值($m_vehiculo_distance);
//塞尔卡诺斯亚洲酒店
对于($i=0;$i)
  • 你的阵列结构相当疯狂。你应该将相关信息作为一个单元放在一起,而不是分散在多个阵列上。你应该有一个单元,看起来像:

    ['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(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”]订购

    现在我正在移动所有的信息,但是['cercanos']没有移动,不知道为什么

    $prova = array();
    
    foreach ($a_vehiculo_distancia as $key) {
    
        $prova[] = $key;
    
    }
    
    array_multisort($prova, SORT_ASC, $matriz_up);
    

    尝试切换到一个更合理的数组结构:
    [0=>['id\u vehiculo'=>…,…],1=>['id\u vehiculo'=>…,…]
    。所有
    usort
    示例可能都采用了这样的结构,这也更加合理。是的,这是一个解决方案,但..我必须对cod做很多更改..使用此数组结构,您原来的
    uasort
    将很好地工作。此外,不要将后续评论/新问题作为答案,例如ase。
    $prova = array();
    
    foreach ($a_vehiculo_distancia as $key) {
    
        $prova[] = $key;
    
    }
    
    array_multisort($prova, SORT_ASC, $matriz_up);