Php 查找数组中数值最小的节点

Php 查找数组中数值最小的节点,php,Php,我有以下数组输出: Array ( [0] => SimpleXMLElement Object ( [0] => 32.4 km ) [1] => SimpleXMLElement Object ( [0] => 10.2 km ) [2] => SimpleXMLElement Object ( [0] => 205 km ) [3] => SimpleXMLElement Object ( [0] => 50

我有以下数组输出:

Array ( 
    [0] => SimpleXMLElement Object ( [0] => 32.4 km )
    [1] => SimpleXMLElement Object ( [0] => 10.2 km )
    [2] => SimpleXMLElement Object ( [0] => 205 km )
    [3] => SimpleXMLElement Object ( [0] => 50.8 km ) 
)
我试图从一个特定的地址得到最短的距离,根据这个结果,最短的距离是10.2公里。如何比较所有公里距离,并仅显示数字最小的距离

我的主要目标是基于这个数组结果获得最短距离

$min_distance = $array[0][0];

foreach($array as $distance)
  $min_distance = (filter_var($distance[0], FILTER_SANITIZE_NUMBER_FLOAT) < filter_var($min_distance, FILTER_SANITIZE_NUMBER_INT)) ? $distance[0] : $min_distance;

echo $min_distance;
因为我不知道数组叫什么,所以我使用了$array。我希望这对你有帮助

关于我使用的方法的一点解释

foreach遍历数组的每个元素。当前节点将在as后安全保存在变量中

filter\u var$var,filter\u SANITIZE\u NUMBER\u FLOAT正在用字符串生成一个数字,而不是完全用数字生成。表示23.5公里转换为23.5公里

布尔值?value1:value2只是一个简短的if语句。如果布尔值为true,则表达式eqauls value1,如果不是value2

我希望这有帮助

因为我不知道数组叫什么,所以我使用了$array。我希望这对你有帮助

关于我使用的方法的一点解释

foreach遍历数组的每个元素。当前节点将在as后安全保存在变量中

filter\u var$var,filter\u SANITIZE\u NUMBER\u FLOAT正在用字符串生成一个数字,而不是完全用数字生成。表示23.5公里转换为23.5公里

布尔值?value1:value2只是一个简短的if语句。如果布尔值为true,则表达式eqauls value1,如果不是value2


我希望这会有所帮助。

如果您希望重新使用包含最低距离值的整个SimpleXMLElement,而不是仅打印距离,假设对象包含的数据多于距离,则可以根据需要调整此片段:

$lowest_item = NULL; 
$lowest_value = NULL;
// iterate over all SimpleXMLElements as a reference for later re-use
foreach ($array as &$item) {
    // extract number from string -- adjust $item[0] to the real object property
    $numeric_value = floatval($item[0]);
    // check if current item is lower than one of the previous
    if ($lowest_value == NULL || $lowest_value >= $numeric_value) {
        $lowest_item = $item;
        $lowest_value = $numeric_value;
    }
}
var_dump($lowest_item);

如果要重复使用包含最小距离值的整个SimpleXMLElement,而不只是打印距离(假设对象包含的数据多于距离),可以根据需要调整此片段:

$lowest_item = NULL; 
$lowest_value = NULL;
// iterate over all SimpleXMLElements as a reference for later re-use
foreach ($array as &$item) {
    // extract number from string -- adjust $item[0] to the real object property
    $numeric_value = floatval($item[0]);
    // check if current item is lower than one of the previous
    if ($lowest_value == NULL || $lowest_value >= $numeric_value) {
        $lowest_item = $item;
        $lowest_value = $numeric_value;
    }
}
var_dump($lowest_item);

使用和从数组中提取数值,然后使用查找数组中的最小值:

echo min(array_map('floatval', $array));    

演示:

使用和从数组中提取数值,然后使用查找数组中的最小值:

echo min(array_map('floatval', $array));    

演示:

请看。试着自己写一些东西,当它不起作用时,带到我们这里来帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。请看。试着自己写一些东西,当它不起作用时,把它带给我们帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。intval将从32.4公里缩短到32公里,这不是期望的结果。intval将从32.4公里缩短到32公里,这不是期望的结果。