0

PHP配列を作成しようとしていますが、これが私の例です。

各配列の最初の行は一意のレコード番号「[767962]」です

その配列のホテルの部屋IDの1行目の後。
2 番目はホテル名
3 番目と 4 番目は最初の価格帯
5 番目は価格です

Array 

( 

    [767962] => Array /// --secial id for price record--//

    ( 

        [0] => 42923 /// --hotelroomid--//

        [1] => Crystal Hotels Kemer Deluxe Resort /// --Hotel Name--//

        [2] => 2013-04-01 /// --Start date--//

        [3] => 2013-05-16 /// --End Date--//

        [4] => 179 /// --Price --//

    ) 

    [767964] => Array 

    ( 

        [0] => 42923 

        [1] => Crystal Hotels Kemer Deluxe Resort 

        [2] => 2013-05-17 

        [3] => 2013-05-26 

        [4] => 239 

    ) 

    [767980] => Array 

    ( 

        [0] => 42940 

        [1] => Rixos Deluxe Resort 

        [2] => 2013-03-02 

        [3] => 2013-05-26 

        [4] => 340 

    ) 

) 

予想される出力は次のとおりです。

そのホテルの部屋 2013 年 5 月 14 日から 2013 年 5 月 21 日までの合計金額を知りたい

1 , 42923 , Crystal Hotels Kemer Deluxe Resort , 2013-05-14 , 2013-05-21 , 1553

2 , 42940 , Rixos Deluxe Resort                , 2013-05-14 , 2013-05-21 , 2380

たとえば、1553 は 2013 年 5 月 14 日から 2013 年 5 月 21 日までの合計金額です。
2013-05-14 - 179
2013-05-15 - 179
2013-05-16 - 239
2013-05-17 - 239
2013-05-18 - 239
2013-05-19 - 239
2013-05-20 - 239
2013 -05-21 - 239

合計は1553です

4

1 に答える 1

0

ブロ私は私のアプリケーションでこの種の作業を行いました。これはほとんどの場合に役立つと思いますが、何か問題が発生した場合は変更します........

たとえば、デモについてはこのリンクを参照してください。

$room_id = 42923;
$start_date = "2013-05-10 00:00:00";
$end_date = "2013-05-21 00:00:00";

上記の 2 つの日付の間の日付を検索

        $day = 86400; // Day in seconds  
        $format = 'Y-m-d'; // Output format (see PHP date funciton)  
        $sTime = strtotime($start_date); // Start as time  
        $eTime = strtotime($end_date); // End as time  
        $numDays = round(($eTime - $sTime) / $day) + 1;  
        $days = array();  

        for ($d = 0; $d < $numDays; $d++) {  
            $days[] = date($format, ($sTime + ($d * $day)));  
        } 

日付ごとに、どの配列に該当するかを確認する必要があります

foreach($days as $key => $d)
{
    foreach($data as $key1 => $dat)
    {
        if($dat[0] == $room_id) {
            if($d >=  $dat[2] && $d<= $dat[3]) {
                $amount += $dat[4];
            }
        }
    }
}
echo $amount;
于 2013-03-08T10:53:43.367 に答える