Php 在嵌套数组中查找最小值

Php 在嵌套数组中查找最小值,php,multidimensional-array,Php,Multidimensional Array,我有这样一个数组: Array ( [0] => Array ( [ID] => 85597 [DISTANCE] => 14916.204333483 ) [1] => Array ( [ID] => 85598 [DISTANCE] => 71.712470188284 ) [2] => Array ( [ID] => 8

我有这样一个数组:

Array
(
[0] => Array
    (
        [ID] => 85597
        [DISTANCE] => 14916.204333483
    )

[1] => Array
    (
        [ID] => 85598
        [DISTANCE] => 71.712470188284
    )

[2] => Array
    (
        [ID] => 85599
        [DISTANCE] => 14130.470174227
    )

[3] => Array
    (
        [ID] => 85600
        [DISTANCE] => 14917.670508146
    )

)
我想返回最低[距离]的[ID]

我尝试使用min(),但这似乎只是比较[ID]值

有什么想法吗?

试试以下方法:

foreach($array as $a){
  $newArray[$a['ID']] = $a['DISTANCE'];
}
$min = min(array_values($newArray));
function showId($least){
  foreach($newArray as $i => $v){
    if($least === $v){
      return $i;
    }
  }
}
echo showId($min);
$min=PHP\u INT\u MAX;
foreach($array作为$value){
如果($value['DISTANCE']<$min){
$minId=$value['ID'];
$min=$value['DISTANCE'];
}
}

$minId
将是距离最短的id

你认为这会让你快乐:-)

短版

function distanceSorter($a, $b) {
    return $a['distance'] - $b['distance'];
}

usort($data, 'distanceSorter');

// if you really just want the lowest value

$lowestDistance = array_shift(usort($data, 'distanceSorter');

那么simple
foreach
呢?如果这些都是直接从数据库中获取的,那么使用它的查询语言来获取min,而不是php。。。你知道。。。如果…可能的副本会丢失它与ID的引用,我认为他想保留它:-)这被认真地标记为答案?:-)哦
    $data = array(
        array('id' => 1, 'distance' => rand(1,100000)),
        array('id' => 2, 'distance' => rand(1,100000)),
        array('id' => 3, 'distance' => rand(1,100000)),
        array('id' => 4, 'distance' => rand(1,100000)),
        array('id' => 5, 'distance' => rand(1,100000)),
        array('id' => 6, 'distance' => rand(1,100000)),
        array('id' => 7, 'distance' => rand(1,100000)),
        array('id' => 8, 'distance' => rand(1,100000)),
    );

    echo "--raw data--\n";

    var_dump($data);

    function distanceSorter($a, $b) {
        return $a['distance'] - $b['distance'];
    }

    usort($data, 'distanceSorter');

    echo "--sorted data--\n";

    var_dump($data);

    echo "--grab first result ( lowest )--\n";

    var_dump($data[0]);


    GIVES

    --raw data--
    array(8) {
        [0]=>
      array(2) {
            ["id"]=>
        int(1)
        ["distance"]=>
        int(27573)
      }
      [1]=>
      array(2) {
            ["id"]=>
        int(2)
        ["distance"]=>
        int(93357)
      }
      [2]=>
      array(2) {
            ["id"]=>
        int(3)
        ["distance"]=>
        int(84515)
      }
      [3]=>
      array(2) {
            ["id"]=>
        int(4)
        ["distance"]=>
        int(13666)
      }
      [4]=>
      array(2) {
            ["id"]=>
        int(5)
        ["distance"]=>
        int(11810)
      }
      [5]=>
      array(2) {
            ["id"]=>
        int(6)
        ["distance"]=>
        int(37548)
      }
      [6]=>
      array(2) {
            ["id"]=>
        int(7)
        ["distance"]=>
        int(10705)
      }
      [7]=>
      array(2) {
            ["id"]=>
        int(8)
        ["distance"]=>
        int(73548)
      }
    }
    --sorted data--
    array(8) {
        [0]=>
      array(2) {
            ["id"]=>
        int(7)
        ["distance"]=>
        int(10705)
      }
      [1]=>
      array(2) {
            ["id"]=>
        int(5)
        ["distance"]=>
        int(11810)
      }
      [2]=>
      array(2) {
            ["id"]=>
        int(4)
        ["distance"]=>
        int(13666)
      }
      [3]=>
      array(2) {
            ["id"]=>
        int(1)
        ["distance"]=>
        int(27573)
      }
      [4]=>
      array(2) {
            ["id"]=>
        int(6)
        ["distance"]=>
        int(37548)
      }
      [5]=>
      array(2) {
            ["id"]=>
        int(8)
        ["distance"]=>
        int(73548)
      }
      [6]=>
      array(2) {
            ["id"]=>
        int(3)
        ["distance"]=>
        int(84515)
      }
      [7]=>
      array(2) {
            ["id"]=>
        int(2)
        ["distance"]=>
        int(93357)
      }
    }
    --grab first result ( lowest )--
    array(2) {
        ["id"]=>
      int(7)
      ["distance"]=>
      int(10705)
    }
function distanceSorter($a, $b) {
    return $a['distance'] - $b['distance'];
}

usort($data, 'distanceSorter');

// if you really just want the lowest value

$lowestDistance = array_shift(usort($data, 'distanceSorter');