我有一个包含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);
?>
答案 0 :(得分:2)
正如@Rocket指出的那样,你的变量存储为字符串,而不是浮点数。这个,字符“3”小于“5”,所以它是第一个。为避免这种情况,请在代码中使用Type Juggling或floatval()
,以确保您的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);