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