在餐厅开放时间,合并具有相同值但不同键的数组数据

时间:2011-06-13 15:24:07

标签: arrays grouping dynamic

我几乎在完整的互联网上搜索我的问题的答案。 我还没有找到解决问题的方法。

我想根据从我的数据库中提取的数据为动态餐厅创建一个营业时间列表。

目前我正在这样做:

拉出数据,并将它们放入数组中。 将日期指定为键,并打开/关闭数据库中的打开/关闭值。

我的代码如下:

// opening hours
public static function opening_hours($var)
{
    // sql
    $sql = "SELECT * FROM restaurants WHERE _id = '$var'";
    $query = mysql_query($sql);
    $data = mysql_fetch_array($query);

    // arrays
    $rows['mon'] = array(open => $data['10'], close => $data['11']);
    $rows['tue'] = array(open => $data['12'], close => $data['13']);
    $rows['wen'] = array(open => $data['14'], close => $data['15']);
    $rows['thu'] = array(open => $data['16'], close => $data['17']);
    $rows['fri'] = array(open => $data['18'], close => $data['19']);
    $rows['sat'] = array(open => $data['20'], close => $data['21']);
    $rows['sun'] = array(open => $data['22'], close => $data['23']);

    // days
    //$days = array(mon, tue, wen, thu, fri, sat, sun);

    // print
    // print '<pre>'. print_r($rows, true).'</pre>';


    foreach ($rows as $key => $value)
    {

        // key
        if($key == 'mon') { $key = 'Man'; }
        else if($key == 'tue') { $key = 'Tir'; }
        else if($key == 'wen') { $key = 'Ons'; }
        else if($key == 'thu') { $key = 'Tor'; }
        else if($key == 'fri') { $key = 'Fre'; }
        else if($key == 'sat') { $key = 'Lør'; }
        else if($key == 'sun') { $key = 'Søn'; }

        // value
        if($value['open'] == 'clo' && $value['close'] == 'clo')
        {
            $value['open'] = 'Lukket';
            $value['close'] = '';
        }


        // other


        // print
        $r = '<div>';
        $r .= $key;
        $r .= ': ';
        $r .= $value['open'];
        $r .= ' - ';
        $r .= $value['close'];  
        $r .= '</div>';

        echo $r;



    }

}   

输出结果为:

男子:16:00-22:00

Tir:16:00-22:00

Ons:16:00-22:00

Tor:16:00-22:00

Fre:14:00-23:30

Lør:16:00-22:00

Søn:Lukket -

我的问题是,我希望合并开启和关闭时间区域的值。

在这种情况下,输出应为:

Man - TorsandLør:16:00-22:00

Fre:14:00-23:30

Søn:Lukket

我完全不知道如何做到这一点。

期待您的帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

我发现了这个,也许它很有帮助!这对我来说:))

Combine days where opening hours are similar

http://codepad.org/SF8xK1yu