1

私はテーブルを持っていますevents

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`data` date DEFAULT NULL,
`days` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)

多数のレコードがあります。

利用できないすべての日付の配列を生成します

$sql = "SELECT * FROM events WHERE `data` LIKE '".$cYear."-".$cMonth."-%'";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
while ($row = mysql_fetch_assoc($sql_result)) {
$unavailable[] = $row["data"];
$days[] = $row["days"];
}

配列$unavailableは次のようになります:(2012-08-10、2012-08-25)配列$ daysは次のようになります:(3、2)

このような配列が必要です:(2012-08-10、2012-08-11、2012-08-12、2012-08-25、2012-08-26)

ありがとうございました!

4

1 に答える 1

1

これがあなたが望むものを生成するいくつかのコードです。

<?php

$unavailable = array('2012-08-10', '2012-08-25');
$days = array(3, 2);

$dates = array();
for ($i = 0; $i < count($days); $i++)
{
    $tm = strtotime($unavailable[$i]);
    for ($d = 0; $d < $days[$i]; $d++)
    {
        $dates[] = date('Y-m-d', $tm + $d * 24 * 60 * 60);
    }
}
print_r($dates);
?>

このコードをコードのwhileループに移動して、$unavailable配列と$days配列が作成されないようにすることができます。

于 2012-08-16T10:05:27.663 に答える