【问题标题】:Matching days and hours匹配日期和时间
【发布时间】:2016-01-18 06:01:03
【问题描述】:

我想从这里分组日期和时间:

Mon  : array(9:00AM - 11:00AM, 1:00pm-6pm)
Tue  : array(8:00AM - 11:00AM,12:00pm-6pm)
Wed  : array(9:00AM - 11:00AM, 1:00pm-6pm)
Thu  : array(9:00AM - 11:00AM,1:00pm-6pm)
Fri  : array(9:00AM - 12:00PM,1:00pm-6pm)
Sat  : array(9:00AM - 7:00PM)
Sun  : array(9:00AM - 12:00AM,1:00pm-6pm)

预期结果:

Mon,wed,thu - 9:00AM - 11:00aM
              1:00pm-6pm
tue :         8:00AM - 11:00am
              12:00pm-6pm   
fri,sun -     9:00AM - 12:00PM
              1:00pm-6pm
sat:          9:00AM -7:00pm
下面是我正在尝试解决的代码。 $open_Hours = 数组( '周一' => 数组('9:00AM - 11:00AM', '1:00pm-6pm'), '周二' => 数组('8:00AM - 11:00AM', '12:00pm-6pm'), '星期三' => 数组('9:00AM - 11:00AM', '1:00pm-6pm'), '周四' => 数组('9:00AM - 11:00AM','1:00pm-6pm'), '星期五' => 数组('9:00AM - 12:00PM','1:00pm-6pm'), '星期六' => 数组('9:00AM - 7:00PM'), '太阳' => 数组('9:00AM - 12:00AM','1:00pm-6pm') ); foreach($open_Hours as $k => $v){ $open_array[$v][] = $k; } foreach($open_array as $time => $days){ 回声内爆(“,”,$天)。 “”。 $时间。 PHP_EOL; }

【问题讨论】:

  • 你是如何超越数组的?
  • 代码不工作。您的任何初始代码和留下的东西都不匹配。在代码中,您没有提到上面存在的周一和其他日子的晚上时间。请检查这两件事。然后你可以比较数组的值。虽然可以互相匹配。如果您需要我,我随时准备帮助您编写代码。
  • ** 我想要输出:周一,周三,周四 - 上午 9:00 - 上午 11:00 周二:上午 8:00 - 上午 11:00 下午 12:00 - 下午 6 点**周五,太阳 - 9:00 AM - 12:00 PM 1:00 PM - 6 PM 周六:9:00 AM -7:00 PM
  • @– Charanjeet Singh : 帮帮我
  • $open_array[$v][] = $k;更改为foreach ($val as $v1) { $open_array[$v1][] = $k;}

标签: php arrays days hour


【解决方案1】:

这是我想出的。

<?php
    $open_Hours = array(
        'Mon' => array('9:00AM - 11:00AM', '1:00pm - 6pm'),
        'Tue' => array('8:00AM - 11:00AM', '12:00pm - 6pm'),
        'Wed' => array('9:00AM - 11:00AM', '1:00pm - 6pm'),
        'Thu' => array('9:00AM - 11:00AM','1:00pm - 6pm'),
        'Fri' => array('9:00AM - 12:00PM','1:00pm - 6pm'),
        'Sat' => array('9:00AM - 7:00PM'),
        'Sun' => array('9:00AM - 12:00PM','1:00pm - 6pm')
    );

    $open_array = array();
    foreach($open_Hours as $day => $periods) {
        if(!isset($open_array[serialize($periods)]))
            $open_array[serialize($periods)] = array();
        $open_array[serialize($periods)][] = $day;
    }

    foreach($open_array as $times => $days) {
        $times = unserialize($times);
        $days = implode(",", $days);
        for($i=0;$i<count($times); $i++) {
            if($i == 0) {
                echo $days;
                echo str_repeat(' ', ((strlen($days)>12)?0:(12-strlen($days)));
            } else {
                echo str_repeat(' ', 12);
            }
            echo '- ' . $times[$i] . PHP_EOL;
        }
    }

输出:

Mon,Wed,Thu - 9:00AM - 11:00AM
            - 1:00pm - 6pm
Tue         - 8:00AM - 11:00AM
            - 12:00pm - 6pm
Fri,Sun     - 9:00AM - 12:00PM
            - 1:00pm - 6pm
Sat         - 9:00AM - 7:00PM

它使用serialize()作为数组索引,这样你就可以正确地按多组小时分组。

如果您需要任何进一步的帮助或解释,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 2021-12-21
    • 2017-12-19
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多