在cakephp3中使用数学函数时遇到的格式不正确的数值

在cakephp3中使用数学函数时遇到的格式不正确的数值,php,Php,我已经看到了这个错误的所有过去的例子,但例子是一个日期函数。我的问题是不同的,因为我使用的是数学函数,它抛出了以下错误: 在第257行遇到格式不正确的数值 下面是我的代码片段——我正在cakephp3.x上编写代码 foreach($query as $row) { $lat=$row->lat.'<br>'; $lng=$row->lng.'<br>'; $lat1=$formlatitude; $lon1=$formlong

我已经看到了这个错误的所有过去的例子,但例子是一个日期函数。我的问题是不同的,因为我使用的是数学函数,它抛出了以下错误:

在第257行遇到格式不正确的数值

下面是我的代码片段——我正在cakephp3.x上编写代码

foreach($query as $row)
{
    $lat=$row->lat.'<br>';
    $lng=$row->lng.'<br>';
    $lat1=$formlatitude;
    $lon1=$formlongitude;
    $lat2=$lat;
    $lon2=$lng;

    $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;
    $unit = strtoupper($unit);
    $miles=$miles * 1.609344;
    //echo $miles;
    //Although distance is calculated in kms only
    if($miles<10)
    {
        echo $miles;
    }

}
你正在设置

$lat=$row->lat.'<br>';
所以现在不管
$lat1
包含什么,
$lat2
都是一个包含HTML的字符串,而不是一个数字

接下来,您将尝试使用
$lat2
作为以下内容中的数字:

deg2rad($lat2)
如果您使用:

$lat2=$row->lat;
相反


我认为通过确保您知道每个变量中的内容,可以更好地解决您面临的问题。使用像
lat
这样的名称在一个位置引用字符串,在另一个位置引用数字,随着时间的推移,可能会导致问题。

Learn。请提供您的错误消息!这对我们来说会更容易帮助你。它抛出了一个错误:在第257行遇到一个格式不正确的数值,它是$dist=sin(deg2rad($lat1))*sin(deg2rad($lat2))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*cos(deg2rad($theta));此行尝试:
$lat1=(float)$formlatitude您的国际语言/数字设置是什么?如果
$lat2=$lat
则它包含垃圾,因为
$lat=$row->lat.
'这将导致
deg2rad($lat2)
呕吐。为什么要将HTML添加到应该是数值的内容中?如果您使用
$lat2=$row->lat
,它可能会起作用。酷!问题是我添加了
标记,后来它就出现在这个数学函数代码上了。我正在通过添加
标记进行调试,所以忘了删除该标记。谢谢酷!问题是我添加了
标记,后来它就出现在这个数学函数代码上了。我正在通过添加
标记进行调试,所以忘了删除该标记。谢谢
deg2rad($lat2)
$lat2=$row->lat;