【问题标题】:Is there a built-in sortByKey() function in PHP?PHP 中有内置的 sortByKey() 函数吗?
【发布时间】:2009-09-17 05:36:47
【问题描述】:

说,$arr 包含多个键为“pos”的子数组,

$arr = sortByKey($arr,'pos');

之后“pos”值最小的子数组将被排在最前面,以此类推。

编辑

$sub1 = array('pos' => 2);
$sub2 = array('pos' => 1);
$arr = array($sub1,$sub2);
$arr = sortByKey($arr,'pos');

在这个函数之后,$arr 将是数组($sub2,$sub1)

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    查看 ksort 函数。

    函数的manual来了。

    很抱歉,我认为您更关注uasort,您将能够定义一个函数来比较每个元素并对其进行排序

    // Array to be sorted
    
    print_r($array);
    
    // Sort and print the resulting array
    uasort($array, create_function('$a,$b', 'return $a[\'pos\'] == $b[\'pos\'] ? 0 : (($a[\'pos\'] < $b[\'pos\']) ? -1 : 1);'));
    print_r($array);
    

    必须进行测试不确定 double 吗?运营商...

    欢呼

    【讨论】:

    • 不,它按键排序,但我需要它按指定键的值排序。
    • 所以一共需要2个函数?
    • 对不起,我看到你现在已经添加了正确的答案,但我不会让我将 -1 更改为 +1。 :-S
    【解决方案2】:

    让我给你写一个函数。它没有经过测试。

    function subarray_sort($array, $subkey) {
      $sortarray=array();
      foreach($array as $item) {
          $sortarray[]=$item[$subkey];
      }
    
      array_multisort($sortarray, $array);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多