PHP min无法正常工作

时间:2013-12-13 17:16:49

标签: php

我有一个包含3个值的数组(56.767,360.997,579.728)。它们是一个数组($ distance)。

好吧,当我运行min($ distance)时,我得到'360.997'。是什么赋予了?

<?php

include('mysql_connect.php');

$MasterState = 'CA';

$query = 'select * from estes_term where Dest_State = "'.$MasterState.'"';
$result = mysql_query($query); 

if($result) {
    $row = @mysqli_fetch_row($result);
}

$Term_Zip = array();
$Distance = array();
$i = '0';
while ($row = mysql_fetch_array($result, MYSQLI_ASSOC)) {
    $Term_Zip[] = $row['Term_Zip'];
    $Distance_xml = file_get_contents('http://zipcodedistanceapi.redline13.com/rest/ua6z0ep0djB3zHGz5Z40hONMVc8yuXgY8nx8BX8OhKSRrzqxzvyRjmDeyMM3J32S/distance.xml/90077/'.$Term_Zip[$i].'/mile');
    $Distance[] = $Distance_xml;
    $i++;
}

echo '<pre>';
var_dump($Term_Zip);
var_dump($Distance).'<br />';
$test1 = min($Distance);
$test = (array_keys($Distance, min($Distance)));

echo '<br />';
echo 'Min'.min($Distance);

?>

2 个答案:

答案 0 :(得分:2)

正如@Rocket指出的那样,你的变量存储为字符串,而不是浮点数。这个,字符“3”小于“5”,所以它是第一个。为避免这种情况,请在代码中使用Type Jugglingfloatval(),以确保您的vars浮动为:

$Distance[] = floatval(trim($Distance_xml));

答案 1 :(得分:0)

这样做......我们正在使用float将所有数组元素转换为array_map,然后从中找到min值。

<?php
$arr= array(56.767, 360.997, 579.728);
echo min(array_map('floatval',$arr));

输出:

56.767

编辑:

要获取密钥,您可以使用 array_search()

$key = array_search(min(array_map('floatval',$arr)), $arr);