duanchuang6978 2014-06-05 11:39
浏览 121
已采纳

php按值对数组进行排序,对于相等的值,按键排序

I have an array

(0=>0,1=>3,2=>3)

I have to sort this array first by values, and for equal values , I have to sort by order of increasing key first.

I have tried to use multisort over the array_keys(SORT_DESC) and array_values(SORT_ASC) separately, but that gives me:

(0=>0,1=>3,2=>3)

but I want

(0=>0,2=>3,1=>3)
  • 写回答

1条回答 默认 最新

  • doupuchao4256 2014-06-05 12:28
    关注

    You can always use simple callback to sort it. Using uksort() it will be:

    $input = array(0 => 0, 2 => 3, 1 => 3);
    
    uksort($input, function($x, $y) use ($input)
    {
       if($input[$x]==$input[$y])
       {
          return $x<$y?-1:$x!=$y;
       }
       return $input[$x]-$input[$y];
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?