0

在关于它们的无穷无尽的问题列表中,我还有另一个独特的问题。我可以想象这个问题很容易解决,但我根本不来。仅仅因为关于这个主题的问题太多了,我在这种情况下找不到任何有用的东西。

数组:

Array
(
  [0] => Array
    (
      [0] => blabla values
      [1] => 91.181818181818
    )
  [1] => Array
    (
      [0] => blabla same values
      [1] => 95.333333333333
    )
  [2] => Array
    (
      [0] => blabla other values
      [1] => 86
    )
  [3] => Array
    (
      [0] => blabla other values
      [1] => 92.5
    )
  [4] => Array
    (
      [0] => blabla same values
      [1] => 88.5
    )
)

我想通过第一个数组维度来唯一的数组,并且只保留第二个中具有最高值的条目。

也许在 MYSQL 中这没什么大不了的,但目前我无法在 php 中实现类似的东西。

所需的输出数组将是:

Array
(
  [0] => Array
    (
      [0] => blabla values
      [1] => 91.181818181818
    )
  [1] => Array
    (
      [0] => blabla same values
      [1] => 95.333333333333
    )
  [2] => Array
    (
      [0] => blabla other values
      [1] => 92.5
    )
)

有人有聪明的主意吗?

4

2 回答 2

3
<?php
$list = array(
    array('blabla values',91.181818181818),
    array('blabla same values', 95.333333333333),
    array('blabla other values', 86),
    array('blabla other values', 92),
    array('blabla same values', 88.5),
);
$result = array();
foreach ($list as $item)
{
    $key = $item[0];
    $value = $item[1];
    if (!isset($result[$key]) || $result[$key][1] < $value)
    {
        $result[$key] = $item;
    }
}
$result = array_values($result);
print_r($result);

输出:

Array
(
    [0] => Array
        (
            [0] => blabla values
            [1] => 91.1818181818
        )

    [1] => Array
        (
            [0] => blabla same values
            [1] => 95.3333333333
        )

    [2] => Array
        (
            [0] => blabla other values
            [1] => 92
        )

)
于 2013-07-21T07:49:20.500 回答
1
usort($arr, function ($a, $b){
    return $a[1] - $b[1];
});
$out = array();
foreach ($arr as $key => $value){
    $out[$value[0]] = $value[1];
}
$arr = array_map(NULL, array_keys($out), $out);

输出:

 Array
(
    [0] => Array
        (
            [0] => blabla same values
            [1] => 95.333333333333
        )

    [1] => Array
        (
            [0] => blabla other values
            [1] => 86
        )

    [2] => Array
        (
            [0] => blabla values
            [1] => 91.181818181818
        )

)
于 2013-07-21T07:55:24.913 回答