将获得的数组与数据库PHP

时间:2016-07-25 15:41:26

标签: php arrays

我是一名初级程序员,仍在学习如何编写代码。 我的PHP中有这个数组

//data inside the array are days name
$days = array();
for($date = $from_date; $date <= $to_date; $date->modify('+1 day')) {
    array_push($days,strtolower($date->format('l')));
}

从这个数组中,将有用户选择的天数列表(星期一,星期二等)

然后我在我的数据库中有这个表

work_scheme

work_scheme由表格

组成
//field_name => data
Monday => Working Day
Tuesday => Working Day
Wednesday => Working Day
Thursday => Working Day
Friday => Working Day
Saturday => Half Day
Sunday => Off Day

这是我的working_days数组,从数据库中检索数据

$working_days = array();
if(count($work_scheme) > 0){
        foreach($work_scheme as $r){
            $working_days[0] = array(
                "monday" => $r['monday']
            );
            $working_days[1] = array(
                "tuesday" => $r['tuesday']
            );  
            $working_days[2] = array(
                "wednesday" => $r['wednesday']
            );      
            $working_days[3] = array(
                "thursday" => $r['thursday']
            );  
            $working_days[4] = array(
                "friday" => $r['friday']
            );  
            $working_days[5] = array(
                "saturday" => $r['saturday']
            );  
            $working_days[6] = array(
                "sunday" => $r['sunday']
            );
        }
    }

那么现在如何将从用户活动中获得的数组与数据库中的表进行比较?

我有以下代码,但它无法正常工作

for($i = 0; $i < count($days); $i++){
        for($x = 0; $x < count($working_days); $x++){
            $total_days = 0;
            if($days[$i] == $working_days[$x]){
                echo "hello world";
            }
        }
    }

我注意到$ working_days [$ x]不会返回我的日期名称,相反它将返回我工作日,半天或休息日 如何比较$ days()到$ working_days日的天数?

因此,如果让我们说选择的日期是星期五,星期六和星期日,我怎样才能编写将返回给我1.5天的代码?

Working day = 1 
Half day  = 0.5
Off day = 0

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

首先,以更有用的方式初始化您的工作日数组

$scheme_days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
$working_days = [];
if (count($work_scheme) > 0)
{
    foreach ($work_scheme as $r)
    {
        foreach ($scheme_days as $scheme_day)
        {
            $working_days[$scheme_day] = $r[$scheme_day];
        }
    }
}

然后,计算你的日子:

$total_days = 0;
for ($i = 0; $i < count($days); $i++)
{
    $worked_day = strtolower($working_days[strtolower($days[$i])]);

    if ($worked_day == "working day")
    {
        $total_days++;
    }
    else if ($worked_day == "half day")
    {
        $total_days += 0.5;
    }
}

echo $total_days;