将数据库中的日期更改为数组

时间:2015-08-09 03:26:55

标签: php database date

我想知道如何从这个

更改日期
Db -> holiday -> holidayDate (type date) = 2015-01-01, 2015-01-03, 2015-02-19, 2015-03-21, 2015-04-03, 2015-05-01, 2015-05-14, 2015-05-16, 2015-06-02, 2015-07-17, 2015-07-18, 2015-08-17, 2015-09-24, 2015-10-14, 2015-12-25

这是代码

$sql = "select * from holiday order by holidayDate ";
//echo $sql;
$ambil_data = mysql_query($sql);
if ($data = mysql_fetch_array($ambil_data))
{
     $tglLibur2 = $data['holidayDate'];
}
else
        {
            echo mysql_error();
        }

function selisihHari($tglAwal, $tglAkhir) 

{
    $tglLibur = array("'".$tglLibur2."'"); <= i just want to get this array from db
    $pecah1 = explode("-", $tglAwal);
    $date1 = $pecah1[2];
    $month1 = $pecah1[1];
    $year1 = $pecah1[0];


    $pecah2 = explode("-", $tglAkhir);
    $date2 = $pecah2[2];
    $month2 = $pecah2[1];
    $year2 =  $pecah2[0];

    $jd1 = GregorianToJD($month1, $date1, $year1);
    $jd2 = GregorianToJD($month2, $date2, $year2);

    $selisih = ($jd2 - $jd1);
    $libur1 = 0;
    $libur2 = 0;
    $libur3 = 0;
    for($i=1; $i<=$selisih; $i++)
    {
        $tanggal = mktime(0, 0, 0, $month1, $date1+$i, $year1);
        $tglstr = date("Y-m-d", $tanggal);

        if (in_array($tglstr, $tglLibur))
        {
            $libur1++;
        }
        if ((date("N", $tanggal) == 7))
        {
            $libur2++;
        }
        if ((date("N", $tanggal) == 6))
        {
            $libur3++;
        }

    }
    return $selisih-$libur1-$libur2-$libur3;


}

进入这个

 $tglLibur = array("2015-01-01","2015-01-03","2015-02-19",
 "2015-03-21","2015-04-03","2015-05-01","2015-05-14","2015-05-16",
 "2015-06-02","2015-07-17","2015-07-18","2015-08-17","2015-09-24",
 "2015-10-14","2015-12-25");

2 个答案:

答案 0 :(得分:1)

首先,您的函数selisihHari无法访问您在其中使用的变量tglLibur2。所以我认为你没有在这里发布你的完整代码。但您可以使用以下代码完成您正在寻找的内容:

$tglLibur = array()
foreach($tglLibur2 as $date){
    $tglLibur[] = $date;
}

但是你在你的获取代码中所做的事情并没有意义。你继续覆盖相同的变量。要更改它,请执行以下操作:

$tglLibur2 = array();
if ($data = mysql_fetch_array($ambil_data))
{
     $tglLibur2[] = $data['holidayDate'];
}

这应该会为您提供您正在寻找的阵列。这样你就可以一起摆脱你的功能。

答案 1 :(得分:0)

假设您没有循环遍历每一行,并且$data['holidayDate']是一串日期,逗号分隔,只需更改:

$tglLibur2 = $data['holidayDate'];

$tglLibur[] = explode(', ', $data['holidayDate']);