为了账号安全,请及时绑定邮箱和手机立即绑定

从foreach循环中获取最低的键和值

从foreach循环中获取最低的键和值

PHP
喵喵时光机 2021-05-06 17:15:19
我正在位置之间进行一些计算,当使用foreach完成操作时,我需要获取返回的最低键和值。我该如何实现?// Los Angeles$start_location = '34.048516, -118.260529';$array=array('New York'=>'40.667646, -73.981803','Boston'=>'42.356909, -71.072573','Miami'=>'25.764618, -80.213501');foreach($array as $x=>$x_value){  echo $x." -> ".calculateDistance($start_location, $x_value);  // Prints a number like "334".}例如,如果New York -> 132,Boston -> 204并且Miami -> 393,我需要它返回最低的为:New York -> 132
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以使用array_search和min函数来获取该元素的最小值和键


$arr = [];

foreach($array as $x=>$x_value){

  $arr[$x]= calculateDistance($start_location, $x_value);

}

echo 'Key :- '.array_search(min($arr),$arr);

echo '<br/>';

echo 'Value :-' .min($arr);

输出


Key :- New York

Value :- 132


查看完整回答
反对 回复 2021-05-28
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您可以定义一个较高的值,然后在循环中进行比较(如果当前值较低),则将其替换(如果不继续)。


$start_location = '34.048516, -118.260529';


$array = [

    'New York' => '40.667646, -73.981803',

    'Boston' => '42.356909, -71.072573',

    'Miami' => '25.764618, -80.213501',

];


$lowest_x = 1000.0;

$lowest_y = 1000.0;

foreach ($array as $key => $value) {

    if (preg_replace('/([0-9\.]+),(.+)/s', '$1', $value) < $lowest_x) {

        $lowest_x = (float) trim(preg_replace('/([0-9\.]+),(.+)/s', '$1', $value));

    }


    if (preg_replace('/(.+),\s([0-9\.]+)/s', '$2', $value) < $lowest_y) {

        $lowest_y = (float) trim(preg_replace('/([0-9\.]+),(.+)/s', '$2', $value));

    }

}


var_dump($lowest_x);

var_dump($lowest_y);

我不确定,您想降低哪个值。您可以使用正则表达式来完成。


查看完整回答
反对 回复 2021-05-28
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信