【问题标题】:checkbox print custom array E.g. if chooses Mon, Wed, Fri, Sat, Sun复选框打印自定义数组如果选择周一、周三、周五、周六、周日
【发布时间】:2021-02-28 17:43:06
【问题描述】:

我有这样的复选框:

例如如果选择周一、周三、周五、周六、周日。 返回周一、周三、周五至周日

例如如果选择周六、周日。 返回周六 - 周日

例如如果选择周一、周二、周四、周六、周日 返回周一、周二、周四、周六、周日

我该如何实现呢?这可能吗?

$data = [
'get_day_for_route'            => (object)[
    'number_day'    => 1,
    'name_day'      => 'Mon'
],
(object)[
    'number_day'    => 2,
    'name_day'      => 'Tue'
],
(object)[
    'number_day'    => 5,
    'name_day'      => 'Fri'
],
(object)[
    'number_day'    => 6,
    'name_day'      => 'Sat'
],
(object)[
    'number_day'    => 7,
    'name_day'      => 'Sun'
 ],
 ];
 foreach($data as $result)
 {
  $day_result[] = $result->name_day;
 }
 echo implode(', ',$day_result);

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 只有常规订购,例如周一、周三、周五、周六、周日才能获得相同的回报。也许我应该做的就是比较三天
  • 我不明白这个问题。这就是表单的工作方式 - 只有选中的复选框才会成为提交数据的一部分。
  • 如果他的顺序等于或大于 3 天,则类似于 From To,例如:Friday、Saturday、Sunday 那么结果将是 Friday - Sunday 而不是 Friday、Saturday、Sunday。但如果只有星期五,星期六,那么结果是相同的星期五,星期六。只是逗号 (,) 和破折号 (-)

标签: php arrays checkbox


【解决方案1】:

这是javascript中的函数

const renderDay = (hari: any) => {
    hari = hari.sort((a,b) => a.day > b.day ? 1 : -1)
    
    let route = ''
    
    let until = false
    
    for(let i = 0; i < hari.length; i++){
        if(i === 0){
            route+= hari[i].name
        } else {
            const before = (hari[i-1].day + 1)
            const after  = (hari[i+1] ? hari[i+1].day - 1 : 0)
            if(hari[i].day === before && hari[i].day === after){
                route+= until ? '' : ' - '
                until = true
            } else {
                route+= `${until ? '' : ', '}${hari[i].name}`
                until = false
            }
        }
    }
    
    return route
}

let hari1 = [
    {day:2, name:'tue'},
    {day:1, name:'mon'},
    {day:5, name:'fri'},
    {day:6, name:'sat'},
    {day:7, name:'sun'}
]

let hari2 = [
    {day:1, name:'mon'},
    {day:3, name:'wed'},
    {day:4, name:'thu'},
    {day:5, name:'fri'},
    {day:7, name:'sun'}
]

let hari3 = [
    {day:1, name:'mon'},
    {day:3, name:'wed'},
    {day:4, name:'thu'},
    {day:5, name:'fri'},
    {day:6, name:'sat'},
    {day:7, name:'sun'}
]



console.log(renderDay(hari1))
console.log(renderDay(hari2))
console.log(renderDay(hari3))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2021-06-11
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多