将获取到的数组与数据库中的数据进行比较 PHP

4

我是一名初级程序员,正在学习如何编写代码。 我在我的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

工作方案包括表格。
//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
尝试像这样做:
首先,以更有用的方式初始化您的工作日数组。
$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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接