簡體   English   中英

通過保持與一維的高價值進入PHP獨特的多維數組?

[英]php unique multidimensional array by keeping entry with the highes value from one dimension?

在無休止的問題清單中,我還有另一個獨特的問題。 我可以想象這個問題很容易解決,但我根本不願討論。 僅僅因為這個問題上有太多問題,我在這種情況下找不到任何有用的東西。

數組:

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
    )
)

有沒有一個聰明的主意?

<?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
        )

)
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
        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM