PHP-根据日期和时间对数组数据进行排序

时间:2020-07-29 16:27:20

标签: php

我正在尝试创建一个表,其中包含基于日期和时间的特定布局中的数据条目。

例如,我们有商店营业时间:

星期一-星期五0900-1200

星期一-星期五1300年-1700年

该表应显示:

Day  Open Closed Open Closed
Mon  0900 1200   1300 1700 
Tue  0900 1200   1300 1700 
Wed  0900 1200   1300 1700 
Thur 0900 1200   1300 1700 
Fri  0900 1200   1300 1700 

如果开放时间还包括以下内容:

周三-周三0900- 1100

周三-1300-1700周三

该表格将显示

 Day  Open Closed Open Closed
    Mon  0900 1200   1300 1700 
    Tue  0900 1200   1300 1700 
    Wed  0900 1100   1300 1700 
    Thur 0900 1200   1300 1700 
    Fri  0900 1200   1300 1700 

以此类推,添加其他条目。

到目前为止,我已经将数据作为数组输入如下:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 1
        )

    [1] => Array
        (
            [0] => 5
            [1] => 5
        )

    [2] => Array
        (
            [0] => 09 : 00
            [1] => 12 : 00
        )

    [3] => Array
        (
            [0] => 11 : 00
            [1] => 17 : 00
        )

)

位置:

[0] is the First Day (Monday = 1)
[1] is the Second Day (Friday = 5)
[2] is the opening time
[3] is the closing time

我正在遍历数组并根据天数,打开和关闭时间创建新的数组,

foreach ($array as $arr => $val) {
        if ($arr === 0) $start = $val;
        if ($arr === 1) $end = $val;
        if ($arr === 2) $open = $val;
        if ($arr === 3) $close = $val;
    }

但是我看不到如何从这里获得所需的输出。

谁能指出我正确的方向?

谢谢

更新 接下来的日子和时间,

Mon - Fri   09 : 00 17 : 00    
Wed - Wed   13 : 00 17 : 00    
Wed - Wed   09 : 00 12 : 00    

创建此数组

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 3
        )

    [1] => Array
        (
            [0] => 5
            [1] => 3
            [2] => 3
        )

    [2] => Array
        (
            [0] => 09 : 00
            [1] => 13 : 00
            [2] => 09 : 00
        )

    [3] => Array
        (
            [0] => 17 : 00
            [1] => 17 : 00
            [2] => 12 : 00
        )

)

更新 结果输出应如下所示:

 Day  Open Closed Open Closed
    Mon  0900 1200   1300 1700 
    Tue  0900 1200   1300 1700 
    Wed  0900 1100   1300 1700 
    Thur 0900 1200   1300 1700 
    Fri  0900 1200   1300 1700 

更多示例

PHP数组

array(4) { [0]=> array(5) { [0]=> int(1) [1]=> int(3) [2]=> int(3) [3]=> int(6) [4]=> int(0) } [1]=> array(5) { [0]=> int(5) [1]=> int(3) [2]=> int(3) [3]=> int(6) [4]=> int(0) } [2]=> array(5) { [0]=> string(7) "0900" [1]=> string(7) "1300" [2]=> string(7) "0900" [3]=> string(7) "0200" [4]=> string(7) "0900" } [3]=> array(5) { [0]=> string(7) "1700" [1]=> string(7) "1700" [2]=> string(7) "1200" [3]=> string(7) "2100" [4]=> string(7) "1300" } }

JSON

[[1,3,3,6,0],[5,3,3,6,0],["0900","1300","0900","0200","0900"],["1700","1700","1200","2100","1300"]]


Mon  0900   1700       
Tue  0900   1700       
Wed  0900   1200       
Wed  1300   1700       
Thur 0900   1700       
Fri  0900   1700       
Sat  0200   2100       
Sun  0900   1300

1 个答案:

答案 0 :(得分:0)

这应该有效:

<?php
$arr = [[1,3,3],[5,3,3],["09 : 00","13 : 00","09 : 00"],["17 : 00","17 : 00","12 : 00"]];
$days = [
    1 => 'Mon',
    2 => 'Tue',
    3 => 'Wed',
    4 => 'Tur',
    5 => 'Fri',
    6 => 'Sat',
    7 => 'Sun',
];
for($i = 0 ; $i < sizeof($arr[0]) ; $i++){
    echo $days[$arr[0][$i]]." - ".$days[$arr[1][$i]]." : ".$arr[2][$i]." - ".$arr[3][$i]."\n";
    // shorter and cleaner way: 
    // echo "{$days[$arr[0][$i]]} - {$days[$arr[1][$i]]} : {$arr[2][$i]} - {$arr[3][$i]} \n";
}

输出:

Mon - Fri : 09 : 00 - 17 : 00
Wed - Wed : 13 : 00 - 17 : 00
Wed - Wed : 09 : 00 - 12 : 00