php点击编号按钮排序改变,PHP 不用笨办法,怎么把一个数字的键重新排序呢?...

题主对题目的表述有些歧义,不知道你的排序要求是下面哪两种情况,索性都说一下。

1. 根据自定义规则排序

// 定义自定义规则,并赋予优先级

function cmp($a, $b){

$arr = [$a, $b];

foreach ($arr as &$value) {

switch ($value) {

case 'date':

$value = 4;

break;

case 'time':

$value = 2;

break;

case 'name':

$value = 3;

break;

case 'title':

$value = 1;

break;

default:

# code...

break;

}

}

return $arr[0] > $arr[1];

}

$arr = [

'name' => 'asdf',

'time' => 'fdfsd',

'date' => 'swere',

'title' => 'zdsfd'

];

uksort($arr, "cmp");

var_dump($arr);

结果

array(4) {

["title"]=>

string(5) "zdsfd"

["time"]=>

string(5) "fdfsd"

["name"]=>

string(4) "asdf"

["date"]=>

string(5) "swere"

}

2. 根据将原数组键值反转排序

$arr = [

'name' => 'asdf',

'time' => 'fdfsd',

'date' => 'swere',

'title' => 'zdsfd'

];

// 键值交换后的数组

$arrToFlip = array_flip($arr);

var_dump($arrToFlip);

// 根据值反转

$arrToFlipRev = array_reverse($arrToFlip, true);

var_dump($arrToFlipRev);

// 再次键值交换

$arrRes = array_flip($arrToFlipRev);

var_dump($arrRes);

结果

array(4) {

["asdf"]=>

string(4) "name"

["fdfsd"]=>

string(4) "time"

["swere"]=>

string(4) "date"

["zdsfd"]=>

string(5) "title"

}

array(4) {

["zdsfd"]=>

string(5) "title"

["swere"]=>

string(4) "date"

["fdfsd"]=>

string(4) "time"

["asdf"]=>

string(4) "name"

}

array(4) {

["title"]=>

string(5) "zdsfd"

["date"]=>

string(5) "swere"

["time"]=>

string(5) "fdfsd"

["name"]=>

string(4) "asdf"

}

另外说一句,以上代码不敢保证性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值