php - 从特定开始日期对天数进行排序
问题描述
我有这个随机顺序的天数:
$jour_planning[] = "friday";
$jour_planning[] = "wednesday";
$jour_planning[] = "monday";
$jour_planning[] = "tuesday";
$jour_planning[] = "thursday";
$jour_planning[] = "sunday";
$jour_planning[] = "saturday";
如果我们今天是“星期二”,我想拥有这个新数组:
$jour_planning[] = "wednesday";
$jour_planning[] = "thursday";
$jour_planning[] = "friday";
$jour_planning[] = "saturday";
$jour_planning[] = "sunday";
$jour_planning[] = "monday";
$jour_planning[] = "tuesday";
用 usort() 怎么能做到这一点?
问候,维尼
解决方案
我会首先对数组进行排序(并避免使用法语和英语命名:))。
然后,循环排序的数组并存储到 2 中,将预期的数组(包括这个)之前的几天和之后的几天分开。
最后,合并两个数组。
当然有更好的方法来做到这一点。
$jour_planning[] = "friday";
$jour_planning[] = "wednesday";
$jour_planning[] = "monday";
$jour_planning[] = "tuesday";
$jour_planning[] = "thursday";
$jour_planning[] = "sunday";
$jour_planning[] = "saturday";
$sorted_days_planning = array(1 => null, 2 => null, 3 => null, 4 => null, 5 => null, 6 => null, 7 => null);
foreach ($jour_planning as $value)
{
$day_of_week = date('N', strtotime($value));
$sorted_days_planning[$day_of_week] = $value;
}
$final_days_planning = array();
$day_to_start = "tuesday";
$day_found = false;
$temp_array = array();
foreach ($sorted_days_planning as $value)
{
if (!$day_found)
{
$temp_array[] = $value;
if ($day_to_start == $value)
$day_found = true;
}
else
$final_days_planning[] = $value;
}
$final_days_planning = array_merge($final_days_planning, $temp_array);
var_dump($final_days_planning);
输出:
array(6) {
[0]=> string(9) "wednesday"
[1]=> string(8) "thursday"
[2]=> string(6) "friday"
[3]=> string(8) "saturday"
[4]=> string(6) "sunday"
[5]=> string(6) "monday"
[6]=> string(7) "tuesday"
}
推荐阅读
- c# - 获取屏幕比例因子 (100%; 125%)
- java - MultiKeyMap 最多可以创建多少个键
- javascript - 使用 $.get() 显示菜单和子菜单
- netlogo - 如何询问代表股票 x% 的海龟死亡?
- highcharts - Highcharts 中的 jQuery/AJAX 数据加载和替换
- ios - Unity Codeless IAP 和 iOS:“UnityIAP:收到 0 个产品”
- mongodb - Mongo 查询失败,错误代码 13 和错误消息“未授权”
- javascript - $().html() 后无法输入空白表单文本区域;
- c# - C#松耦合访问属性值
- spring-security - 允许通过 Spring Web Security 对安全资源进行有限访问