对具有最高点的数组进行排序?

发布于 2024-11-07 18:35:55 字数 521 浏览 0 评论 0原文

如何对 15.00 键中具有最高点的数组进行排序?

我有一个如下所示的数组:

Array
(

    [9] => Array
        (
            [15.00] => 3.0
            [20.00] => 8.0
            [25.00] => 10.5
        )

    [2] => Array
        (
            [15.00] => 2.0
            [20.00] => 5.0
            [25.00] => 2.5
        )


    [4] => Array
        (
            [15.00] => 6.0
            [25.00] => 4.0
            [30.00] => 6.0
        )
)

按顺序应该是: 4、9 和 2

How do I sort array that has highest point from 15.00 key?

I have an array look like this:

Array
(

    [9] => Array
        (
            [15.00] => 3.0
            [20.00] => 8.0
            [25.00] => 10.5
        )

    [2] => Array
        (
            [15.00] => 2.0
            [20.00] => 5.0
            [25.00] => 2.5
        )


    [4] => Array
        (
            [15.00] => 6.0
            [25.00] => 4.0
            [30.00] => 6.0
        )
)

In order it should be: 4, 9 and 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

自此以后,行同陌路 2024-11-14 18:35:55

PHP 有 usort,一个可以让你排序的函数通过用户提供的比较函数。还有 uasort 维护索引关联。

这是一个示例:

<?php
$array = Array(
  9 => Array(
            15.00 => 3.0,
            20.00 => 8.0,
            25.00 => 10.5
  ),
  2 => Array(
            15.00 => 2.0,
            20.00 => 5.0,
            25.00 => 2.5
  ),
  4 => Array(
            15.00 => 6.0,
            25.00 => 4.0,
            30.00 => 6.0
  )
);

function my_func($a, $b) {
   if ($a[15.00] == $b[15.00])
      return 0;
   return ($a[15.00] < $b[15.00]) ? 1 : -1; // backwards sorting
}

uasort($array, my_func);
var_dump($array);
?>

它正在工作

希望这有帮助。

PHP has usort, a function enabling you to sort via a user-provided comparison function. There's also uasort that maintains index association.

Here's an example:

<?php
$array = Array(
  9 => Array(
            15.00 => 3.0,
            20.00 => 8.0,
            25.00 => 10.5
  ),
  2 => Array(
            15.00 => 2.0,
            20.00 => 5.0,
            25.00 => 2.5
  ),
  4 => Array(
            15.00 => 6.0,
            25.00 => 4.0,
            30.00 => 6.0
  )
);

function my_func($a, $b) {
   if ($a[15.00] == $b[15.00])
      return 0;
   return ($a[15.00] < $b[15.00]) ? 1 : -1; // backwards sorting
}

uasort($array, my_func);
var_dump($array);
?>

And here's it working.

Hope this helps.

向地狱狂奔 2024-11-14 18:35:55

如果我正确理解你的问题,我个人可能会使用 usort() 。在我的回调中,我会比较 $a[15.00]$b[15.00]

If I understand your question correctly, I would personally probably use usort(). In my callback I would compare $a[15.00] and $b[15.00].

喵星人汪星人 2024-11-14 18:35:55

你想要 uasort():

function cmp($a, $b) {
  if ($a[15.00] < $b[15.00]) return 1;
  if ($a[15.00] > $b[15.00]) return -1;
  return 0;
}

uasort($data, "cmp");

You want uasort():

function cmp($a, $b) {
  if ($a[15.00] < $b[15.00]) return 1;
  if ($a[15.00] > $b[15.00]) return -1;
  return 0;
}

uasort($data, "cmp");
天涯沦落人 2024-11-14 18:35:55
<?
for ($i=1;$i<=count($arr);$i++)
for ($j=$i+1;$j<=count($arr) - 1;$j++)
 if ($arr[$i]['15.00'] > $arr[$j]['15.00']) {
   $tmp = $arr[$i];
   $arr[$i] = $arr[$j];
   $arr[$j] = $tmp
 }
?>
<?
for ($i=1;$i<=count($arr);$i++)
for ($j=$i+1;$j<=count($arr) - 1;$j++)
 if ($arr[$i]['15.00'] > $arr[$j]['15.00']) {
   $tmp = $arr[$i];
   $arr[$i] = $arr[$j];
   $arr[$j] = $tmp
 }
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文