为了账号安全,请及时绑定邮箱和手机立即绑定

PHP通过键的特定开始对数组进行排序/重新排序

PHP通过键的特定开始对数组进行排序/重新排序

PHP
红颜莎娜 2022-01-14 15:02:35
我想根据值开始对数组元素进行排序或重新排序。我的数组:[    0 => 'Sun',    1 => 'Mon',    2 => 'Tue',    3 => 'Wed',    4 => 'Thu',    5 => 'Fri',    6 => 'Sat']$ 开始 = 3;预期输出:[    3 => 'Wed',    4 => 'Thu',    5 => 'Fri',    6 => 'Sat',    0 => 'Sun',    1 => 'Mon',    2 => 'Tue',]我尝试使用uksort,但它没有返回预期的输出。uksort($weekDays, function ($a, $b) use ($startOn) {    return $startOn-$a;});电流输出:[    3 => 'Wed'    4 => 'Thu'    5 => 'Fri'    6 => 'Sat'    2 => 'Tue'    1 => 'Mon'    0 => 'Sun']
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您可以使用 foreach


$start = 3;

$r1 = $r2 = [];

foreach($a as $k => $v){

  ($k >= $start) ? ($r1[$k]=$v) : ($r2[$k]=$v);

}

$r = $r1 + $r2;

print_r($r);

工作示例:- https://3v4l.org/1KDoR


查看完整回答
反对 回复 2022-01-14
?
茅侃侃

TA贡献1842条经验 获得超21个赞

使用uksort,查看演示


$startOn = 3;

uksort($array,function($a,$b)use($startOn){return ($a + 7 - $startOn) % 7 - ($b + 7 - $startOn) % 7;});

print_r($array);


查看完整回答
反对 回复 2022-01-14
?
墨色风雨

TA贡献1853条经验 获得超6个赞

这是工作解决方案,


$k = array_search(3, array_keys($arr));

$arr = array_slice($arr,$k,null,true) + array_slice($arr,0,$k,true);

print_r($arr);

演示。


输出:-


Array

(

    [3] => Wed

    [4] => Thu

    [5] => Fri

    [6] => Sat

    [0] => Sun

    [1] => Mon

    [2] => Tue

)

array_search — 在数组中搜索给定的值,如果成功则返回第一个对应的键


array_slice — 提取数组的一个切片


笔记:


默认情况下, array_slice()将重新排序和重置整数数组索引。可以通过将 preserve_keys 设置为 TRUE来更改此行为。无论此参数如何,始终保留字符串键。


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号