Rumah  >  Soal Jawab  >  teks badan

PHP mengembalikan nilai NaN

Saya mempunyai fungsi yang mengira jarak antara dua koordinat GPS. Saya kemudian mendapatkan semua koordinat daripada pangkalan data dan gelung melalui mereka semua untuk mendapatkan jarak antara koordinat semasa dan koordinat sebelumnya dan kemudian menambahnya pada tatasusunan untuk peranti GPS tertentu. Atas sebab tertentu ia mengembalikan NaN. Saya telah cuba menukarnya kepada dua kali ganda, integer dan membundarkan nombor itu.

Ini kod PHP saya:

function distance($lat1, $lon1, $lat2, $lon2) {
      $lat1 = round($lat1, 3);
      $lon1 = round($lon1, 3);
      $lat2 = round($lat2, 3);
      $lon2 = round($lon2, 3);
      $theta = $lon1 - $lon2; 
      $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
      $dist = acos($dist); 
      $dist = rad2deg($dist); 
      $miles = $dist * 60 * 1.1515;
      if($miles < 0) $miles = $miles * -1;
      return ($miles * 1.609344);  
}
$this->db->query("SELECT * FROM `gps_loc` WHERE `imeiN`='" . $sql . "' AND `updatetime`>=$timeLimit ORDER BY `_id` DESC");
    $dist = array();
    $dist2 = array();
    while($row = $this->db->getResults()) {
        $dist2[$row['imeiN']] = 0;
        $dist[$row['imeiN']][]["lat"] = $row['lat'];
        $dist[$row['imeiN']][count($dist[$row['imeiN']]) - 1]["lng"] = $row['lon'];
    }

    foreach($dist as $key=>$d) {
        $a = 0;
        $b = 0;
        foreach($dist[$key] as $n) {
            if($a > 0) {
                $dist2[$key] += $this->distance($n['lat'], $n['lng'], $dist[$key][$a - 1]['lat'], $dist[$key][$a - 1]['lng']);
            }
            $a++;
        }

    }
    echo json_encode($dist2);

P粉914731066P粉914731066182 hari yang lalu360

membalas semua(2)saya akan balas

  • P粉373990857

    P粉3739908572024-03-26 11:27:07

    sin()cos() 的范围在 -1 和 1 之间。因此,在第一次计算 $dist 时结果范围是 -2 到 2。然后将其传递给 acos(),其参数必须介于 -1 和 1 之间。例如,acos(2) memberi NaN . Semua yang lain di sana juga memberikan NaN.

    Saya tidak pasti apakah formula yang sepatutnya, tetapi dari situlah NaN anda datang. Semak fungsi trigonometri anda dengan teliti.

    balas
    0
  • P粉005134685

    P粉0051346852024-03-26 10:04:44

    Nilai yang anda ekstrak daripada pangkalan data mungkin rentetan, yang akan menyebabkan masalah ini.

    Anda juga mungkin ingin menyemak soalan yang ditanya oleh Kolink dalam siarannya.

    balas
    0
  • Batalbalas